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 и очень сильно, мне пришлось сделать такую вот пакасть.!
  • Вопрос задан
  • 477 просмотров
Пригласить эксперта
Ответы на вопрос 2
@synapse_people
перестаньте юзать это дерьмо
Ответ написан
BanterFace
@BanterFace
jack of all trades, master of none
STK может регистрировать пользователей, посмотри там код
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽