Дублирование аккаунтов
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
-
FladeX
- Former team member
- Сообщения: 1935
- Стаж: 19 лет 3 месяца
- Откуда: Саранск
- Благодарил (а): 7 раз
- Поблагодарили: 59 раз
Дублирование аккаунтов
Имеется связка cms + olympus. В cms есть интеграция с форумом, при этом cms использует форумскую таблицу юзеров, не занося никаких изменений в свою таблицу. Регистрация пользователей идет через форум в обычном режиме. Требуется сделать дублирование аккаунтов при регистрации, чтобы помимо занесения в таблицу _users форума, они еще заносились в нужную таблицу cms.
Обе таблицы находятся в одной базе данных.
Принцип я думаю прост - нужно добавить еще один sql-запрос на INSERT (верно ведь?). Но куда его добавлять - я не знаю. Желательно тыкните носом в нужный файл и нужную строку.
Обе таблицы находятся в одной базе данных.
Принцип я думаю прост - нужно добавить еще один sql-запрос на INSERT (верно ведь?). Но куда его добавлять - я не знаю. Желательно тыкните носом в нужный файл и нужную строку.
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
-
Master of Tragedy
- phpBB 1.4.2
- Сообщения: 68
- Стаж: 19 лет 1 месяц
- Откуда: Санкт-Петербург
Re: Дублирование аккаунтов
Я полагаю, что в ucp_register можно дописать код, взяв за образец тот, что используется форумом и модифицировать его для работы с БД cms. Я посмотрел. Там в принципе все просто.
Ce grand malheur de ne pouvoir etre seul...
-
FladeX
- Former team member
- Сообщения: 1935
- Стаж: 19 лет 3 месяца
- Откуда: Саранск
- Благодарил (а): 7 раз
- Поблагодарили: 59 раз
Re: Дублирование аккаунтов
Там 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 Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
-
Палыч
- Former team member
- Сообщения: 9683
- Стаж: 20 лет 3 месяца
- Откуда: Питер
- Благодарил (а): 3 раза
- Поблагодарили: 454 раза
Re: Дублирование аккаунтов
FladeX
function user_add файл functions_user.php
function user_add файл functions_user.php
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
-
FladeX
- Former team member
- Сообщения: 1935
- Стаж: 19 лет 3 месяца
- Откуда: Саранск
- Благодарил (а): 7 раз
- Поблагодарили: 59 раз
Re: Дублирование аккаунтов
Строки 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 Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
-
Палыч
- Former team member
- Сообщения: 9683
- Стаж: 20 лет 3 месяца
- Откуда: Питер
- Благодарил (а): 3 раза
- Поблагодарили: 454 раза
Re: Дублирование аккаунтов
FladeX
Ну если только дублирование, то в принципе, да
Ну если только дублирование, то в принципе, да
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
-
FladeX
- Former team member
- Сообщения: 1935
- Стаж: 19 лет 3 месяца
- Откуда: Саранск
- Благодарил (а): 7 раз
- Поблагодарили: 59 раз
Re: Дублирование аккаунтов
Эээ, я что-то еще упустил? Дело в хэшировании паролей, практически все cms используют md5, а у олимпуса нечто оригинальное, поэтому я из-за соображений практичности решил предусмотреть плохие варианты, и иметь под рукой таблицу с паролями в md5. На всякий пожарный) А уж что для этого еще нужно - трудно сказать, я думал что дублирования вполне хватит.
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
-
RedNaxi
- Former team member
- Сообщения: 933
- Стаж: 19 лет 7 месяцев
- Откуда: BeBoss.ru
- Благодарил (а): 2 раза
- Поблагодарили: 14 раз
Re: Дублирование аккаунтов
очевидно что для этого надо заносить себе в таблицу пароль в мд5. ищи в функции, где вычисляется хеш пароля, дописывай дальше свой, и делай инсерт себе.
-
rxu
- phpBB Guru

- Сообщения: 17272
- Стаж: 20 лет 4 месяца
- Откуда: Красноярск
- Благодарил (а): 632 раза
- Поблагодарили: 2412 раз
Re: Дублирование аккаунтов
Наверное будет проще сделать в includes/ucp/ucp_register.php где скрипт оперирует непосредственно данными из регистрационной формы.
В функцию user_add пароль поступает уже в хэшированном алгоритмом phpBB виде.
В функцию user_add пароль поступает уже в хэшированном алгоритмом phpBB виде.
-
RedNaxi
- Former team member
- Сообщения: 933
- Стаж: 19 лет 7 месяцев
- Откуда: BeBoss.ru
- Благодарил (а): 2 раза
- Поблагодарили: 14 раз
Re: Дублирование аккаунтов
опять же, немного не понятно, зачем плодить таблицы пользователей и какой такой всякий случай что может пригодится пароль в мд пять. но если уж и правда может возникнуть такая необходимость, имхо проще добавить поле в таблицу пользователей форума, чем заводить еще одну таблицу.
к тому же, если так сделать то с реализацией все будет проще, чем как сейчас задумано.
к тому же, если так сделать то с реализацией все будет проще, чем как сейчас задумано.
-
FladeX
- Former team member
- Сообщения: 1935
- Стаж: 19 лет 3 месяца
- Откуда: Саранск
- Благодарил (а): 7 раз
- Поблагодарили: 59 раз
Re: Дублирование аккаунтов
rxu, 314-331 строки? Хэширование паролей вижу
соответственно здесь заменяем на
и вместо вызова функции user_add вызываем например cmsuser_add, причем саму функцию описываем в functions_user.php. Так?
RedNaxi, зачем добавлять поле в таблицу форума? Мне нужна именно таблица цмски, причем готовая, так, чтобы при отсоединении форума там все нормально работало. Существующая интеграция использует таблицу форума, а мне это кажется не совсем удачным способом, поэтому хочу со временем переделать на использование двух разных таблиц.
Код: Выделить всё
\'user_password\' => phpbb_hash($data[\'new_password\']),Код: Выделить всё
\'user_password\' => md5($data[\'new_password\']),RedNaxi, зачем добавлять поле в таблицу форума? Мне нужна именно таблица цмски, причем готовая, так, чтобы при отсоединении форума там все нормально работало. Существующая интеграция использует таблицу форума, а мне это кажется не совсем удачным способом, поэтому хочу со временем переделать на использование двух разных таблиц.
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
-
rxu
- phpBB Guru

- Сообщения: 17272
- Стаж: 20 лет 4 месяца
- Откуда: Красноярск
- Благодарил (а): 632 раза
- Поблагодарили: 2412 раз
Re: Дублирование аккаунтов
FladeX
Вариантов конкретной реализации может быть множество, можно и так, как вы сказали. Но: не надо менять, лучше добавить ещё один индекс, например и в вашей функции "например cmsuser_add" оперировать именно им.
Вариантов конкретной реализации может быть множество, можно и так, как вы сказали. Но: не надо менять, лучше добавить ещё один индекс, например
Код: Выделить всё
user_password_cms => md5($data[new_password]),-
FladeX
- Former team member
- Сообщения: 1935
- Стаж: 19 лет 3 месяца
- Откуда: Саранск
- Благодарил (а): 7 раз
- Поблагодарили: 59 раз
Re: Дублирование аккаунтов
Точно, так будет более рационально. Спасибо за оперативную помощь 
//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
-
FladeX
- Former team member
- Сообщения: 1935
- Стаж: 19 лет 3 месяца
- Откуда: Саранск
- Благодарил (а): 7 раз
- Поблагодарили: 59 раз
Re: Дублирование аккаунтов
Трудности возникли.
Итак, пациент - phpBB 3.0.1.
Мои действия:
/includes/ucp/ucp_register.php
После строк (примерно 314-316)
добавляю после
Теперь есть переменная с md5 хэшем пароля пользователя.
Далее... Строки 331-332:
Добавляю после
Получается вызов новой функции.
Теперь файл includes/functions_user.php
Строки 294-298
Добавляем после:
То есть описываю новую функцию, которая вставляет в табличку dncms_users запись с данными только что зарегистрированного на форуме юзера. Только хэш пароля другой.
На практике при попытке зарегистрироваться (/forum/ucp.php?mode=register) получаю пустую страницу.
Помогите пожалуйста, что тут неверно?
Итак, пациент - 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']),Далее... Строки 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);
}На практике при попытке зарегистрироваться (/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 Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
-
rxu
- phpBB Guru

- Сообщения: 17272
- Стаж: 20 лет 4 месяца
- Откуда: Красноярск
- Благодарил (а): 632 раза
- Поблагодарили: 2412 раз
Re: Дублирование аккаунтов
Это что такое в конце строкиFladeX писал(а):'$user_regdate', 1)");
Добавлено спустя 39 секунд:
И, кстати, вам ли мне объяснять - смотрите еррор лог.

