Задать вопрос
spark108
@spark108

Как в PHPbb3 программно зарегистрировать пользователя?

Есть код который отлично добавляет пользователей в таблицы phpbb, то есть регает:
//Подключени движка.
	define('IN_PHPBB', true);
	
	$phpbb_root_path = $_SERVER['DOCUMENT_ROOT'] . $data['phpbb_dir'];
	$phpEx = substr(strrchr(__FILE__, '.'), 1);
	require_once($phpbb_root_path . 'common.' . $phpEx);
	require_once($phpbb_root_path.'includes/functions_user.'. $phpEx);
	
	//Сбор данных.
	$group_id = ($coppa) ? 5 : 4;
	$group_name = ($coppa) ? 'REGISTERED_COPPA' : 'REGISTERED';
	$sql = 'SELECT group_id FROM ' . GROUPS_TABLE . "WHERE group_name = '" . $db->sql_escape($group_name) . "'AND group_type = " . GROUP_SPECIAL;
	$result = $db->sql_query($sql);
	$row = $db->sql_fetchrow($result);
	$group_id = $row['group_id'];
	$timezone = '-6';
	$language = 'ru';
	$user_type = USER_NORMAL;
	$user_actkey = md5(rand(0, 100) . time());
	$user_actkey = substr($user_actkey, 0, rand(8, 12));
	$user_ip = $user->ip;
	$registration_time = time();
	$user_inactive_reason = INACTIVE_REGISTER;
	$user_inactive_time = time();
	
	//Регистрация.
	$user_row = array(
		'username'              => $data['username'],
		'user_password'         => phpbb_hash($data['password']),
		'user_email'            => $data['email'],
		'group_id'              => (int) $group_id,
		'user_timezone'         => (float) $timezone,
		'user_lang'             => $language,
		'user_type'             => $user_type,
		'user_actkey'           => $user_actkey,
		'user_ip'               => $user_ip,
		'user_regdate'          => $registration_time,
		'user_inactive_reason'  => $user_inactive_reason,
		'user_inactive_time'    => $user_inactive_time,
	);
	$user_id = user_add($user_row);

$data - Масив с логином, емайлом и паролем.

Все это как я раньше говорил, - работает на 5 с +. Но я хочу поместить все это дело в отдельную функцию.
А именно вот:
function user_added_phpbb($data){
	#------------------------------------------------------------------------------------------------#
	#	Регистрация в БД phpBB                                                                       #
	#------------------------------------------------------------------------------------------------#
	#   array $data - Масив с данными.                                                               #
	#------------------------------------------------------------------------------------------------#
	#	$data = array(                                                                               #
	#		'phpbb_dir' => '/forum/',  - Путь к phpBB относительно корня сайта.                      #
	#		'username' => 'user',      - Пользователь которого требуется зарегестрировать.           #
	#		'password' => '1234',      - Пароль пользователя которого требуется зарегестрировать.    #
	#		'email' => '1234@mail.ru', - Почтовый адрес которого требуется зарегестрировать.         #
	#	);                                                                                           #
	#------------------------------------------------------------------------------------------------#
	
	global $phpbb_root_path, $phpEx, $phpbb_dispatcher, $db, $phpbb_container;
	
	//Подключени движка.
	define('IN_PHPBB', true);
	
	$phpbb_root_path = $_SERVER['DOCUMENT_ROOT'] . $data['phpbb_dir'];
	$phpEx = substr(strrchr(__FILE__, '.'), 1);
	require_once($phpbb_root_path . 'common.' . $phpEx);
	require_once($phpbb_root_path.'includes/functions_user.'. $phpEx);
	
	//Сбор данных.
	$group_id = ($coppa) ? 5 : 4;
	$group_name = ($coppa) ? 'REGISTERED_COPPA' : 'REGISTERED';
	$sql = 'SELECT group_id FROM ' . GROUPS_TABLE . "WHERE group_name = '" . $db->sql_escape($group_name) . "'AND group_type = " . GROUP_SPECIAL;
	$result = $db->sql_query($sql);
	$row = $db->sql_fetchrow($result);
	$group_id = $row['group_id'];
	$timezone = '-6';
	$language = 'ru';
	$user_type = USER_NORMAL;
	$user_actkey = md5(rand(0, 100) . time());
	$user_actkey = substr($user_actkey, 0, rand(8, 12));
	$user_ip = $user->ip;
	$registration_time = time();
	$user_inactive_reason = INACTIVE_REGISTER;
	$user_inactive_time = time();
	
	//Регистрация.
	$user_row = array(
		'username'              => $data['username'],
		'user_password'         => phpbb_hash($data['password']),
		'user_email'            => $data['email'],
		'group_id'              => (int) $group_id,
		'user_timezone'         => (float) $timezone,
		'user_lang'             => $language,
		'user_type'             => $user_type,
		'user_actkey'           => $user_actkey,
		'user_ip'               => $user_ip,
		'user_regdate'          => $registration_time,
		'user_inactive_reason'  => $user_inactive_reason,
		'user_inactive_time'    => $user_inactive_time,
	);
	$user_id = user_add($user_row);
	return $user_id;
}

Но тут возникает проблема. Что нужно обьявить глобальные переменные, а я так думаю что их много.
Объявил эти:
global $phpbb_root_path, $phpEx, $phpbb_dispatcher, $db, $phpbb_container;

Но после этого мне выдает что глобальный масив $_SERVER отключен. В инете пишут что нужно инклудить некий файл и использовать его вместо $_SERVER (Этот файл так же есть в PHPbb, но он не робит.).

Дак вот подскажите что у меня не так работает и как все это перевести в рабочий вид, или подскажите альтернативу.

Так как моя сделанная мной система авторизации и хешировки отличается от PHPbb и очень сильно, мне пришлось сделать такую вот пакасть.!
  • Вопрос задан
  • 488 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
@synapse_people
перестаньте юзать это дерьмо
Ответ написан
BanterFace
@BanterFace
jack of all trades, master of none
STK может регистрировать пользователей, посмотри там код
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽