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

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

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

Сообщение Odina 02.04.2008 22:32

Мне необходимо сделать так, чтобы при регистрации на сайте происходила регистрация на форуме.

Насколько я поняла, мне необходимо добавить данные в таблицу users. При этом необходимо внести данные в следующие поля:

group_id - 2
user_ip - IP при регистрации
user_regdate - текущий UNIX timestamp
username - Логин
username_clean - Логин
user_password - зашифрованный пароль
user_passchg - текущий UNIX timestamp
user_email - e-mail
user_email_hash - ???
user_lastmark - текущий UNIX timestamp
user_lang - ru
user_style - 1
user_form_salt - ???

Остальные поля можно оставить со значениями по-умолчанию.

Кто-нибудь знает формулу шифровки пароля, для чего используются поля user_email_hash и user_form_salt и что необходимо в них забить?

Необходимо ли еще добавление информации в другие таблицы форума?
Аватара пользователя
Odina
phpBB 1.2.0
 
Сообщения: 10
Зарегистрирован: 02.04.2008 22:17
Откуда: Санк-Петербург


Сообщение FladeX 02.04.2008 22:43

Советую заглянуть в раздел FAQ
//
// 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
 
Сообщения: 1186
Зарегистрирован: 02.06.2007 23:44
Откуда: Саранск

Сообщение Всеслав Чародей 02.04.2008 22:43

А не проще ли переписать движок чтобы он брал данные пользователей из таблиц форума?
Всеслав Чародей
phpBB 1.0.0
 
Сообщения: 8
Зарегистрирован: 02.04.2008 21:54

Сообщение Odina 02.04.2008 22:48

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

Движок сайта на стадии написания и именно такие условия поставлены заказчиком.

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

Сообщение FladeX 02.04.2008 22:57

Odina
http://scarydolls.ru/ - интеграция двойки
http://ageof.ru/ - интеграция тройки (еще не до конца сделал, но регистрация + авторизация совместная).
Поэтому если с движком не определились, советую выбрать Slaed cms (примеры выше), e107 (есть плагин интеграции, я его переводил на русский язык). Также если не ошибаюсь Joomla поддерживает олимпус.
//
// 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
 
Сообщения: 1186
Зарегистрирован: 02.06.2007 23:44
Откуда: Саранск

Сообщение Odina 02.04.2008 23:03

Движок сайта самописный. Мне не нужно готовое решение, мне нужна информация.

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

Сообщение FladeX 02.04.2008 23:17

Odina
посмотрите тему про совместный логин, возможно наведет на мысли...
ссылка
Или в моей теме про интеграцию с Slaed посмотреть как сделана регистрация совместная.
//
// 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
 
Сообщения: 1186
Зарегистрирован: 02.06.2007 23:44
Откуда: Саранск

Сообщение Odina 02.04.2008 23:23

Спасибо, я посмотрю.

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

Сообщение FladeX 03.04.2008 0:14

common.php + includes/constans.php, includes/function_*.php
//
// 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
 
Сообщения: 1186
Зарегистрирован: 02.06.2007 23:44
Откуда: Саранск

Сообщение Odina 03.04.2008 11:41

FladeX,

Код: Выделить всё
//кусок кода из phpbb3, который отвечает за генерирование ключей сессий и паролей
function unique_id()
{
        $val = $config['rand_seed'] . microtime();
        $val = md5($val);
        $config['rand_seed'] = md5($config['rand_seed'] . $val . $extra);
        return substr($val, 4, 16);
}


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

Сообщение FladeX 03.04.2008 11:48

Odina
Код: Выделить всё
if ($forum == "phpbb3"){
   include_once("forum/config.php");
   $result = $db->sql_query("SELECT * FROM ".$table_prefix."config");
   while ($row = $db->sql_fetchrow($result)) {
      $board_config[$row['config_name']] = $row['config_value'];
   }
//
// 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
 
Сообщения: 1186
Зарегистрирован: 02.06.2007 23:44
Откуда: Саранск

Сообщение Odina 03.04.2008 11:58

Да, но функция увидит этот массив, только если его в функции объявить глобальным. Разве не так?

Код: Выделить всё
//кусок кода из phpbb3, который отвечает за генерирование ключей сессий и паролей
function unique_id()
{
        global $config;       
        $val = $config['rand_seed'] . microtime();
        $val = md5($val);
        $config['rand_seed'] = md5($config['rand_seed'] . $val . $extra);
        return substr($val, 4, 16);
}


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

FladeX писал(а):Odina
Код: Выделить всё
if ($forum == "phpbb3"){
   include_once("forum/config.php");
   $result = $db->sql_query("SELECT * FROM ".$table_prefix."config");
   while ($row = $db->sql_fetchrow($result)) {
      $board_config[$row['config_name']] = $row['config_value'];
   }


Да и здесь забивается массив board_config, а функция использует массив config. Массив config забивается в скрипте common.php
Если толкнуть кувшин, из него плеснет тем, чем он наполнен...
Аватара пользователя
Odina
phpBB 1.2.0
 
Сообщения: 10
Зарегистрирован: 02.04.2008 22:17
Откуда: Санк-Петербург

Сообщение FladeX 03.04.2008 12:12

Odina
это лишнее имхо. Тот вариант что я выложил - рабочий. Проверялось мною и еще несколькими юзерами, все в порядке, все работает.
//
// 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
 
Сообщения: 1186
Зарегистрирован: 02.06.2007 23:44
Откуда: Саранск

Сообщение Odina 03.04.2008 13:00

Это ошибка, но не критичная.

А работает потому что функция md5 все равно генерирует код, ей по барабану, что ей передают.

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

А вот это уже критичная ошибка:

Код: Выделить всё
function new_user($user_name, $user_password, $user_email) {
      global $db, $table_prefix, $board_config, $user_def_group;
      $user_name_clean = strtolower(str_replace('|', '|', $user_name));
      if(strlen($user_password) != 34){
         $phpbb_password = phpbb_hash($user_password);
      } else {
         $phpbb_password = $user_password;
      }
      $email_hash = crc32(strtolower($user_email)).strlen($user_email);
      $form_salt = unique_id();
      $user_ip = getenv("REMOTE_ADDR");
      $num_users_new = $board_config['num_users'] + 1;
      list($last_id) = $db->sql_fetchrow($db->sql_query("SELECT user_id FROM ".$table_prefix."users ORDER BY user_id DESC LIMIT 1"));
      $reg_id = $last_id + 1;
      $db->sql_query("INSERT INTO ".$table_prefix."users (user_id, group_id, user_ip, user_regdate, username, username_clean, user_password, user_passchg, user_email, user_email_hash, user_lang, user_dateformat, user_form_salt) VALUES ('".$reg_id."', '".$user_def_group."', '".$user_ip."', '".time()."', '".$user_name."', '".$user_name_clean."', '".$phpbb_password."', '".time()."', '".$user_email."', '".$email_hash."', '".$board_config['default_lang']."', '".$board_config['default_dateformat']."', '".$form_salt."')");
      $db->sql_query("INSERT INTO ".$table_prefix."user_group (group_id, user_id, group_leader, user_pending) VALUES ('2', '".$reg_id."', '0', '0')");

      $db->sql_query("UPDATE ".$table_prefix."config SET config_value = '".$reg_id."' WHERE config_name = 'newest_user_id'");
      $db->sql_query("UPDATE ".$table_prefix."config SET config_value = '".$user_name."' WHERE config_name = 'newest_username'");
      $db->sql_query("UPDATE ".$table_prefix."config SET config_value = '".$num_users_new."' WHERE config_name = 'num_users'");
   }


Что произойдет, если функция getenv("REMOTE_ADDR") вернет false?

Произойдет сбой в записи, функция sql_query вернет false, а скрипт побежит дальше, не отработав эту ошибку...

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

Вот в этот запрос вместо 2 должно забиваться значение $user_def_group

Код: Выделить всё
$db->sql_query("INSERT INTO ".$table_prefix."user_group (group_id, user_id, group_leader, user_pending) VALUES ('2', '".$reg_id."', '0', '0')");


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

Сообщение rxu 03.04.2008 16:47

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

И вообще, перенесено в форум для авторов.
Изображение
Аватара пользователя
rxu
phpBB Guru
 
Сообщения: 4506
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск

След.

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

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

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