Дублирование аккаунтов

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

Дублирование аккаунтов

Сообщение FladeX 27.06.2008 21:18

Имеется связка cms + olympus. В cms есть интеграция с форумом, при этом cms использует форумскую таблицу юзеров, не занося никаких изменений в свою таблицу. Регистрация пользователей идет через форум в обычном режиме. Требуется сделать дублирование аккаунтов при регистрации, чтобы помимо занесения в таблицу _users форума, они еще заносились в нужную таблицу cms.

Обе таблицы находятся в одной базе данных.

Принцип я думаю прост - нужно добавить еще один sql-запрос на INSERT (верно ведь?). Но куда его добавлять - я не знаю. Желательно тыкните носом в нужный файл и нужную строку.
//
// 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: 2
Аватара пользователя
FladeX
phpBB 2.0.18
 
Сообщения: 1148
Зарегистрирован: 02.06.2007 23:44
Откуда: Саранск

Re: Дублирование аккаунтов

Сообщение Master of Tragedy 28.06.2008 0:17

Я полагаю, что в ucp_register можно дописать код, взяв за образец тот, что используется форумом и модифицировать его для работы с БД cms. Я посмотрел. Там в принципе все просто.
Ce grand malheur de ne pouvoir etre seul...
Аватара пользователя
Master of Tragedy
phpBB 2.0.1
 
Сообщения: 144
Зарегистрирован: 04.08.2007 22:37

Re: Дублирование аккаунтов

Сообщение FladeX 28.06.2008 0:35

Там insert только в одной строке, и это явно не таблица _users.
Код: Выделить всё
            $sql = \'INSERT INTO \' . CONFIRM_TABLE . \' \' . $db->sql_build_array(\'INSERT\', array(
               \'confirm_id\'   => (string) $confirm_id,
               \'session_id\'   => (string) $user->session_id,
               \'confirm_type\'   => (int) CONFIRM_REG,
               \'code\'         => (string) $code,
               \'seed\'         => (int) $seed)
            );
//
// 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: 2
Аватара пользователя
FladeX
phpBB 2.0.18
 
Сообщения: 1148
Зарегистрирован: 02.06.2007 23:44
Откуда: Саранск

Re: Дублирование аккаунтов

Сообщение Палыч 28.06.2008 0:44

FladeX
function user_add файл functions_user.php
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
Никогда не бойся делать то, что ты пока не умеешь. Помни, что Ковчег был построен любителем. Профессионалы строили Титаник...
Аватара пользователя
Палыч
Просто Палыч
 
Сообщения: 6185
Зарегистрирован: 24.05.2006 23:20
Откуда: Питер

Re: Дублирование аккаунтов

Сообщение FladeX 28.06.2008 0:54

Строки 241-244?
Код: Выделить всё
   $sql = \'INSERT INTO \' . USERS_TABLE . \' \' . $db->sql_build_array(\'INSERT\', $sql_ary);
   $db->sql_query($sql);

   $user_id = $db->sql_nextid();

Сразу после этого вставить аналогичный участок, но только уже для другой таблицы, верно?
//
// 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: 2
Аватара пользователя
FladeX
phpBB 2.0.18
 
Сообщения: 1148
Зарегистрирован: 02.06.2007 23:44
Откуда: Саранск

Re: Дублирование аккаунтов

Сообщение Палыч 28.06.2008 1:01

FladeX
Ну если только дублирование, то в принципе, да
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
Никогда не бойся делать то, что ты пока не умеешь. Помни, что Ковчег был построен любителем. Профессионалы строили Титаник...
Аватара пользователя
Палыч
Просто Палыч
 
Сообщения: 6185
Зарегистрирован: 24.05.2006 23:20
Откуда: Питер

Re: Дублирование аккаунтов

Сообщение FladeX 28.06.2008 1:08

Эээ, я что-то еще упустил? Дело в хэшировании паролей, практически все cms используют md5, а у олимпуса нечто оригинальное, поэтому я из-за соображений практичности решил предусмотреть плохие варианты, и иметь под рукой таблицу с паролями в md5. На всякий пожарный) А уж что для этого еще нужно - трудно сказать, я думал что дублирования вполне хватит.
//
// 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: 2
Аватара пользователя
FladeX
phpBB 2.0.18
 
Сообщения: 1148
Зарегистрирован: 02.06.2007 23:44
Откуда: Саранск

Re: Дублирование аккаунтов

Сообщение RedNaxi 28.06.2008 7:57

очевидно что для этого надо заносить себе в таблицу пароль в мд5. ищи в функции, где вычисляется хеш пароля, дописывай дальше свой, и делай инсерт себе.
Программирую всякую чушь за еду.
Контакт
Над этим, и не только, я когда-то работал.
Аватара пользователя
RedNaxi
phpBB 2.0.18
 
Сообщения: 1146
Зарегистрирован: 21.02.2007 3:05
Откуда: BMK :)

Re: Дублирование аккаунтов

Сообщение rxu 28.06.2008 8:53

Наверное будет проще сделать в includes/ucp/ucp_register.php где скрипт оперирует непосредственно данными из регистрационной формы.
В функцию user_add пароль поступает уже в хэшированном алгоритмом phpBB виде.
Изображение
Аватара пользователя
rxu
phpBB Guru
 
Сообщения: 4376
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск

Re: Дублирование аккаунтов

Сообщение RedNaxi 28.06.2008 10:26

опять же, немного не понятно, зачем плодить таблицы пользователей и какой такой всякий случай что может пригодится пароль в мд пять. но если уж и правда может возникнуть такая необходимость, имхо проще добавить поле в таблицу пользователей форума, чем заводить еще одну таблицу.
к тому же, если так сделать то с реализацией все будет проще, чем как сейчас задумано.
Программирую всякую чушь за еду.
Контакт
Над этим, и не только, я когда-то работал.
Аватара пользователя
RedNaxi
phpBB 2.0.18
 
Сообщения: 1146
Зарегистрирован: 21.02.2007 3:05
Откуда: BMK :)

Re: Дублирование аккаунтов

Сообщение FladeX 28.06.2008 11:57

rxu, 314-331 строки? Хэширование паролей вижу
Код: Выделить всё
\'user_password\'         => phpbb_hash($data[\'new_password\']),

соответственно здесь заменяем на
Код: Выделить всё
\'user_password\'         => md5($data[\'new_password\']),

и вместо вызова функции user_add вызываем например cmsuser_add, причем саму функцию описываем в functions_user.php. Так?

RedNaxi, зачем добавлять поле в таблицу форума? Мне нужна именно таблица цмски, причем готовая, так, чтобы при отсоединении форума там все нормально работало. Существующая интеграция использует таблицу форума, а мне это кажется не совсем удачным способом, поэтому хочу со временем переделать на использование двух разных таблиц.
//
// 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: 2
Аватара пользователя
FladeX
phpBB 2.0.18
 
Сообщения: 1148
Зарегистрирован: 02.06.2007 23:44
Откуда: Саранск

Re: Дублирование аккаунтов

Сообщение rxu 28.06.2008 12:00

FladeX
Вариантов конкретной реализации может быть множество, можно и так, как вы сказали. Но: не надо менять, лучше добавить ещё один индекс, например
Код: Выделить всё
user_password_cms         => md5($data[new_password]),
и в вашей функции "например cmsuser_add" оперировать именно им.
Изображение
Аватара пользователя
rxu
phpBB Guru
 
Сообщения: 4376
Зарегистрирован: 12.05.2006 18:16
Откуда: Красноярск

Re: Дублирование аккаунтов

Сообщение FladeX 28.06.2008 14:15

Точно, так будет более рационально. Спасибо за оперативную помощь ;)
//
// 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: 2
Аватара пользователя
FladeX
phpBB 2.0.18
 
Сообщения: 1148
Зарегистрирован: 02.06.2007 23:44
Откуда: Саранск

Re: Дублирование аккаунтов

Сообщение FladeX 01.07.2008 18:30

Трудности возникли.
Итак, пациент - phpBB 3.0.1.
Мои действия:
/includes/ucp/ucp_register.php
После строк (примерно 314-316)
Код: Выделить всё
            $user_row = array(
               'username'            => $data['username'],
               'user_password'         => phpbb_hash($data['new_password']),

добавляю после
Код: Выделить всё
               'user_cmspass'         => md5($data['new_password']),

Теперь есть переменная с md5 хэшем пароля пользователя.
Далее... Строки 331-332:
Код: Выделить всё
            // Register user...
            $user_id = user_add($user_row, $cp_data);

Добавляю после
Код: Выделить всё
            cmsuser_add($user_row, $user_id);

Получается вызов новой функции.
Теперь файл includes/functions_user.php
Строки 294-298
Код: Выделить всё
      set_config('newest_user_colour', $row['group_colour'], true);
   }

   return $user_id;
}

Добавляем после:
Код: Выделить всё
function cmsuser_add($user_row, $user_id)
{
   global $db, $user, $auth, $config, $phpbb_root_path, $phpEx;

   if (empty($user_row['username']) || !isset($user_row['user_email']))
   {
      return false;
   }

   $username_clean = utf8_clean_string($user_row['username']);

   $sql_ary = array(
      'username'         => $user_row['username'],
      'username_clean'   => $username_clean,
      'user_cmspass'      => (isset($user_row['user_cmspass'])) ? $user_row['user_cmspass'] : '',
      'user_pass_convert'   => 0,
      'user_email'      => strtolower($user_row['user_email']),
      'user_email_hash'   => crc32(strtolower($user_row['user_email'])) . strlen($user_row['user_email']),
      'user_regdate'      => $user_row['user_regdate'],
      'group_id'         => $user_row['group_id'],
      'user_type'         => $user_row['user_type'],
   );

   if (sizeof($remaining_vars))
   {
      foreach ($remaining_vars as $key)
      {
         $sql_ary[$key] = $user_row[$key];
      }
   }
   $sql = "INSERT INTO dncms_users (userid, uname, upass, umail, regdate, activate) VALUES ('$user_id', '$username', '$user_cmspass', '$user_email', '$user_regdate', 1)");

   $db->sql_query($sql);
}

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

На практике при попытке зарегистрироваться (/forum/ucp.php?mode=register) получаю пустую страницу.
Помогите пожалуйста, что тут неверно?
//
// 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: 2
Аватара пользователя
FladeX
phpBB 2.0.18
 
Сообщения: 1148
Зарегистрирован: 02.06.2007 23:44
Откуда: Саранск

Re: Дублирование аккаунтов

Сообщение rxu 01.07.2008 18:35

FladeX писал(а):'$user_regdate', 1)");

Это что такое в конце строки :?:

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

След.

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

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

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