PunBB дополнительные поля при регистрации

Author Роман Чернышов    Category CMS, PHP     Tags , Комментариев 0 Дата 1 Апр

Этот вопрос уже поднимался на официальном форуме поддержки движка PunBB 1.4, но я решил описать вкратце процесс добавления новый полей при регистрации, т.к. очень часто поступают подобные вопросы (мой движок сайта СП имеется данный интегрированный форум). Добавление полей не такая уж и сложная задача, вся суть сводится к редактированию нескольких файлов и добавлению в базу данный дополнительных полей (в таблицу punbb_users).

Пример добавления поля для ввода промокода.
Этап первый:
Редактируем файл register.php, а именно добавляем в форму регистрации новые поля. Открываем файл в блокноте или крутом блокноте notepad++, и в строке 411, вставляем следующий код:

<div class="sf-set set5">
	<div class="sf-box text">
		<label for="fld5"><span>Промо-код</span> <small>Укажите промо-код полученный  в результате рекламы или указав номер человека, который  Вас привел</small></label><br />
	       <span class="fld-input"><input type="text" id="fld5" name="promocod" size="35" value="<?php if (isset($_POST['promocod'])) echo forum_htmlencode($_POST['promocod']); ?>" autocomplete="off" /></span>
	</div>
</div>

Этап второй:
В этом же файле, на строке 131 добавляем PHP код:

		$promocod = forum_trim($_POST['promocod']);

После строки 228, добавляем

	'promocod'	=> $promocod,

Этап третий:
Идем в файл /include/functions.php и ищем там функцию add_user(), она расположена на строке 2020, далее уже в самой функции переписываем MySQL запрос к БД, а именно добавляем в запрос наш промо-код.
И так строки 2029 — 2033 примут вид

	// Add the user
	$query = array(
		'INSERT'	=> 'username, promocod, group_id, password, email, email_setting, timezone, dst, language, style, registered, registration_ip, last_visit, salt, activate_key',
		'INTO'		=> 'users',
		'VALUES'	=> "'{$forum_db->escape($user_info['username'])}', 
				    '{$forum_db->escape($user_info['promocod'])}',
				    '{$user_info['group_id']}',
				    '{$forum_db->escape($user_info['password_hash'])}',
				    '{$forum_db->escape($user_info['email'])}',
				    '{$user_info['email_setting']}',
				    '".floatval($user_info['timezone'])."',
				    '{$user_info['dst']}',
				    '{$forum_db->escape($user_info['language'])}',
				    '{$forum_db->escape($user_info['style'])}',
				    '{$user_info['registered']}',
				    '{$forum_db->escape($user_info['registration_ip'])}',
			            '{$user_info['registered']}',
				    '{$forum_db->escape($user_info['salt'])}',
				    '{$user_info['activate_key']}'"
	);

Как видно, в запросе появилось новое поле promocod и значение для него. Но! В базе данных, в таблице пользователей у нас пока нет такого поля и его нужно создать, для этого можно выполнить прямой запрос в БД

ALTER TABLE `punbb_users` ADD `promocod` varchar(200) COLLATE 'utf8_general_ci' NOT NULL AFTER `username`, COMMENT='';

или воспользоваться PhpMyAdmin и добавить в таблице punbb_users поле promocod

Дальше уже обрабатываем полученный промо-код как хотим, он хранится в Бд в таблице пользователей, у каждого пользователя то, что он ввел. Можем давать в зависимости от этого бонусы, скидки, привилегии. Это уже остается за вами.

Если у кого-то, возникли вопросы буду рад ответить на них в комментариях.

Оставить комментарий

Об авторе и блоге Чернышов Р.В. Сертификат. Топ 10% лучших фрилансеров, Чернышов Р.В.

Друзья, всем привет!

Меня зовут Роман Чернышов, я веб-разработчик и данный блог посвящен моим проектам и бизнесу.

Тут я делюсь личным опытом
и отвечаю на вопросы. Я всегда готов к сотрудничеству с вами, готов реализовать проект любой сложности(опыт 10+ лет).

Если у вас есть вопросы, предложения, вы хотите совершить покупку моих решений или заказать работу, пишите!



Последние вопросы
Список вопросов
Последние комментарии
Меню

Archive

Мои проекты
Insurance CMS Love Crm CMS Совместные покупки Мой PHP Framework Хостинг для моих клиентов Лицензии на мой софт и поддержка