Регистрация на сайте с одновременной регистрацией на форуме

Форум для авторов модов для phpBB 3.0.x. Здесь можно попросить помощи в разработке у коллег.

Сообщение FladeX 03.04.2008 19:37

rxu
да, кстати, я когда пароли переносил, заметил. В двойке используется md5, в олимпусе уже что-то другое.
Odina
к сожалению не могу как-либо прокомментировать это, потому что основной автор этой интеграции не я. Я лишь исправил несколько ошибок, протестировал и записал инструкцию согласно стандартам оформления модов phpBB.
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
Интеграция phpBB 3.0.0 и Slaed 2.5 lite
Сверстал стилей для phpBB: 5
Аватара пользователя
FladeX
phpBB 2.0.18
 
Сообщения: 1162
Зарегистрирован: 02.06.2007 23:44
Откуда: Саранск


Сообщение Odina 04.04.2008 0:56

rxu писал(а):Odina
Не занимайтесь самодеятельностью, тем более, что в phpBB3 хэш собственный, а не чистый md5.
includes/functions_user.php
function user_add

Я бы рада, но функция user_add тащит за собой приличное количество классов и других функций :(

Предложенный вариант вполне рабочий, после небольшой модернизации. В результате регистрация происходит, пользователь успешно аутентифицируется форумом.

Добавлено спустя 2 часа 8 минут 31 секунду:

Попробовала воспользоваться функцией user_add

Код: Выделить всё
<?php
define('IN_PHPBB', true);

$phpbb_root_path='forum/';
$phpEx="php";

// Include files
include ("forum/config.php");

require($phpbb_root_path . 'includes/acm/acm_file.' . $phpEx);
require($phpbb_root_path . 'includes/cache.' . $phpEx);
//require($phpbb_root_path . 'includes/template.' . $phpEx);
require($phpbb_root_path . 'includes/session.' . $phpEx);
require($phpbb_root_path . 'includes/auth.' . $phpEx);

require($phpbb_root_path . 'includes/functions.' . $phpEx);
require($phpbb_root_path . 'includes/functions_content.' . $phpEx);
require($phpbb_root_path . 'includes/functions_user.' . $phpEx);

require($phpbb_root_path . 'includes/constants.' . $phpEx);
require($phpbb_root_path . 'includes/db/' . $dbms . '.' . $phpEx);
require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx);

// Set PHP error handler to ours
set_error_handler(defined('PHPBB_MSG_HANDLER') ? PHPBB_MSG_HANDLER : 'msg_handler');

// Instantiate some basic classes
$user      = new user();
$auth      = new auth();
//$template   = new template();
$cache      = new cache();
$db         = new $sql_db();

// Connect to DB
$db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false, defined('PHPBB_DB_NEW_LINK') ? PHPBB_DB_NEW_LINK : false);

// We do not need this any longer, unset for safety purposes
unset($dbpasswd);

// Grab global variables, re-cache if necessary
$config = $cache->obtain_config();

// Add own hook handler
//require($phpbb_root_path . 'includes/hooks/index.' . $phpEx);
//$phpbb_hook = new phpbb_hook(array('exit_handler', 'phpbb_user_session_handler', 'append_sid', array('template', 'display')));

//foreach ($cache->obtain_hooks() as $hook)
//{
//   @include($phpbb_root_path . 'includes/hooks/' . $hook . '.' . $phpEx);
//}

$user_row['username'] = "qwerty";
$user_row['user_password'] = phpbb_hash("qwerty");
$user_row['group_id'] = 2;
$user_row['user_email'] = "qwerty@qwerty.ru";
$user_row['user_type'] = 0;

user_add($user_row,false);

?>


Все Ok, пользователь регистрируется. Осталось только убрать ненужное для регистрации.

Добавлено спустя 2 минуты 6 секунд:

Перед отправкой данных, надо обязательно проверить наличие пользователя с таким логином или email, а то вылетает глобальная ошибка MySql.

Добавлено спустя 48 минут 18 секунд:

Начала раскручивать клубок, собирая все функции, запрашиваемые скриптом. Набрала на 1500 строк, плюнула, пускай будет так, как есть.

Код: Выделить всё
<?php
define('IN_PHPBB', true);

$phpbb_root_path='forum/';
$phpEx="php";

// Include files
require("forum/config.php");

require($phpbb_root_path . 'includes/utf/utf_normalizer.' . $phpEx);
require($phpbb_root_path . 'includes/acm/acm_file.' . $phpEx);
require($phpbb_root_path . 'includes/cache.' . $phpEx);
require($phpbb_root_path . 'includes/session.' . $phpEx);
require($phpbb_root_path . 'includes/auth.' . $phpEx);
require($phpbb_root_path . 'includes/functions.' . $phpEx);
require($phpbb_root_path . 'includes/functions_user.' . $phpEx);
require($phpbb_root_path . 'includes/constants.' . $phpEx);
require($phpbb_root_path . 'includes/db/' . $dbms . '.' . $phpEx);
require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx);

// Set PHP error handler to ours
set_error_handler(defined('PHPBB_MSG_HANDLER') ? PHPBB_MSG_HANDLER : 'msg_handler');

// Instantiate some basic classes
$user      = new user();
$auth      = new auth();
$cache      = new cache();
$db      = new $sql_db();

// Connect to DB
$db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false, defined('PHPBB_DB_NEW_LINK') ? PHPBB_DB_NEW_LINK : false);

// We do not need this any longer, unset for safety purposes
unset($dbpasswd);

// Grab global variables, re-cache if necessary
$config = $cache->obtain_config();

$user_row['username'] = "qwerty";
$user_row['user_password'] = phpbb_hash("qwerty");
$user_row['group_id'] = 2;
$user_row['user_email'] = "qwerty@qwerty.ru";
$user_row['user_type'] = 0;

user_add($user_row,false);
?>
Если толкнуть кувшин, из него плеснет тем, чем он наполнен...
Аватара пользователя
Odina
phpBB 1.2.0
 
Сообщения: 10
Зарегистрирован: 02.04.2008 22:17
Откуда: Санк-Петербург

Сообщение rxu 04.04.2008 5:39

Odina
Вместо десятков ненужных строк кода, предшествующих вызову user_add, вы могли просто сделать
Код: Выделить всё
include($phpbb_root_path . 'common.' . $phpEx);
Изображение
Аватара пользователя
rxu
phpBB Guru
 
Сообщения: 4447
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск

Сообщение Odina 04.04.2008 11:37

И подключится все подряд, абсолютно ненужное мне для работы.
Если толкнуть кувшин, из него плеснет тем, чем он наполнен...
Аватара пользователя
Odina
phpBB 1.2.0
 
Сообщения: 10
Зарегистрирован: 02.04.2008 22:17
Откуда: Санк-Петербург

Сообщение rxu 04.04.2008 16:53

Odina писал(а):И подключится все подряд

Что - всё подряд?
Изображение
Аватара пользователя
rxu
phpBB Guru
 
Сообщения: 4447
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск

Сообщение FladeX 05.04.2008 21:26

Каким образом обрабатывается bb-код в подписи пользователя? В базе данных в таблице users несколько полей, в одном хранится сам текст подписи, в другом bb-коды, причем в странном формате. Так вот, при интеграции и выводе подписи пользователя таким образом:
Код: Выделить всё
      if($userinfo['user_sig'] != $user_sig) $db->sql_query("UPDATE ".$prefix."_users SET user_sig = '".$user_sig."' WHERE LOWER(user_name) = '".$user_name."'");

получается такой результат:
Код: Выделить всё
Текст обычной толщины и [b:8nioq7rc]жирный![/b:8nioq7rc]

Вопрос - как правильно выводить подпись вне форума?
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
Интеграция phpBB 3.0.0 и Slaed 2.5 lite
Сверстал стилей для phpBB: 5
Аватара пользователя
FladeX
phpBB 2.0.18
 
Сообщения: 1162
Зарегистрирован: 02.06.2007 23:44
Откуда: Саранск

Сообщение rxu 05.04.2008 21:30

Есть поля user_sig_bbcode_uid и user_sig_bbcode_bitfield, которые используются при парсинге ббкода.
Обработку можете посмотреть во viewtopic.php, блок начинается с комментария
Код: Выделить всё
// End signature parsing, only if needed
Изображение
Аватара пользователя
rxu
phpBB Guru
 
Сообщения: 4447
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск

Сообщение FladeX 05.04.2008 22:08

То есть вместо этого:
Код: Выделить всё
   if($userinfo['user_sig'] != $user_sig) $db->sql_query("UPDATE ".$prefix."_users SET user_sig = '".$user_sig."' WHERE LOWER(user_name) = '".$user_name."'");

должно быть так:
Код: Выделить всё
      $user_sig = censor_text($user_sig);
      $user_sig = bbcode_nl2br($user_sig);
      $user_sig = smiley_text($user_sig);
      if($userinfo['user_sig'] != $user_sig) $db->sql_query("UPDATE ".$prefix."_users SET user_sig = '".$user_sig."' WHERE LOWER(user_name) = '".$user_name."'");

верно?
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
Интеграция phpBB 3.0.0 и Slaed 2.5 lite
Сверстал стилей для phpBB: 5
Аватара пользователя
FladeX
phpBB 2.0.18
 
Сообщения: 1162
Зарегистрирован: 02.06.2007 23:44
Откуда: Саранск

Сообщение FladeX 10.04.2008 23:54

Скажите хотя бы где эти функции заданы? Не нашел я их...
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
Интеграция phpBB 3.0.0 и Slaed 2.5 lite
Сверстал стилей для phpBB: 5
Аватара пользователя
FladeX
phpBB 2.0.18
 
Сообщения: 1162
Зарегистрирован: 02.06.2007 23:44
Откуда: Саранск

Пред.

Вернуться в Для авторов (phpBB 3.0.x)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0