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

Author Автор: Роман Чернышов    Опубликовано: 1 апреля 2013

Этот вопрос уже поднимался на официальном форуме поддержки движка 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

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

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

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

Автор блога
Роман Чернышов
Веб-разработчик,
Full Stack
Senior, Architect
PHP, JavaScript, Node.JS, Python, HTML 5, CSS 3, MySQL, Bash, Linux Admin
Заказать работу
предложить оффер

Моя книга
Книга. Веб-разработчик. Легкий вход в профессию
Печатная книга
Веб-разработчик.
Легкий вход в профессию
Оформить предзаказ
Последние вопросы
Список вопросов
Последние комментарии
Меню

Archive

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