Есть код который отлично добавляет пользователей в таблицы 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 и очень сильно, мне пришлось сделать такую вот пакасть.!