Буквально час назад наткнулся на внешнюю авторизацию IPB с DLE , но всё это чушь.
Нашёл статью интеграции с 8.0 и 2.3.6 , пришлось переделать для 9.x + IPB 3.1.X
Автор: неизвестный
Адаптация под новую версию: Herurg
Данный хук работает только с DLE 9.x + IP.Board 3.1.x (протестировано)Открываем:
Ищем:
Добавить ниже:
$ipb_dle_lan[0] = «Данное имя уже используется на форуме.»;
$db_ipb_user = «пользователь»;
$db_ipb_password = «пароль»;
$db_ipb_namedb = «имя_базы»;
$db_ipb_local = «localhost»;
$db_ipb_error = 1; // 1 — показывать ошибки в соединении с бд форума, 0 — нет
$db_prefix_ipb = «префикс_если_его_нету_оставить_пустым»;
$ipb = new db;
$ipb->connect($db_ipb_user, $db_ipb_password, $db_ipb_namedb, $db_ipb_local, $db_ipb_error);
Найти:
Заменить на:
Найти:
$row = $db->super_query( «SELECT COUNT(*) as count FROM » . USERPREFIX . «_users WHERE email = ‘$email’ OR LOWER(name) REGEXP ‘[[::]]’ OR name = ‘$name'» );
Добавить ниже:
$ipb_test_name = $ipb->super_query («SELECT COUNT(*) as count FROM {$db_prefix_ipb}members where name = ‘».strtolower($name).»‘»);
if ($ipb_test_name [‘count’] > 0) $stop .= $ipb_dle_lan[0];
Найти:
$db->query( «INSERT INTO » . USERPREFIX . «_users (name, password, email, reg_date, lastdate, user_group, info, signature, favorites, xfields, logged_ip) VALUES (‘$name’, ‘$regpassword’, ‘$email’, ‘$add_time’, ‘$add_time’, ‘» . $config[‘reg_group’] . «‘, », », », », ‘» . $_IP . «‘)» );
Добавить ниже:
$ipb_dle = new ipb_dle;
$salt = $ipb_dle->generate_password_salt(5);
$salt = addslashes($salt);
$ph = $ipb_dle->generate_compiled_passhash($salt, md5($_POST[‘password1’]) );
$insert_ipb = $ipb->insert_id(); //ид вставки
$member_key = $ipb_dle->generate_auto_log_in_key();
$key_expire = $member_key * 60 * 60 * 24;
$ipb->query(«INSERT INTO `{$db_prefix_ipb}members` (
member_id,
name,
members_l_username,
members_display_name,
members_l_display_name,
members_seo_name,
member_login_key,
member_login_key_expire,
email,
member_group_id,
joined,
ip_address,
time_offset,
allow_admin_mails,
language,
msg_show_notification,
members_auto_dst,
members_pass_hash,
members_pass_salt
)
VALUES (
0,
‘$name’,
‘».strtolower($name).»‘,
‘$name’,
‘».strtolower($name).»‘,
‘».strtolower($name).»‘,
‘».$ipb_dle->generate_auto_log_in_key().»‘,
‘$key_expire’,
‘$email’,
‘3’,
‘».time().»‘,
‘$_IP’,
‘3’,
‘1’,
‘1’,
‘1’,
‘0’,
‘$ph’,
‘$salt’
)»);
$ipb_st = $ipb->super_query(«select * from {$db_prefix_ipb}cache_store where cs_key = ‘stats'»);
$st_arr = unserialize($ipb_st[‘cs_value’]);
$st_arr[‘mem_count’]++;
$st_arr[‘last_mem_name’] = $name;
$st_arr[‘last_mem_id’] = $insert_ipb;
$st_arr2 = serialize($st_arr);
$ipb->query(«UPDATE {$db_prefix_ipb}cache_store set cs_value = ‘$st_arr2’ where cs_key = ‘stats'»);
Найти:
Вставить выше:
class ipb_dle
{
function generate_password_salt($len=5)
{
$salt = »;
for ( $i = 0; $i generate_password_salt( $len );
return md5($pass);
}
}
Открываем:
Найти:
$db->query («SELECT name FROM » . USERPREFIX . «_users WHERE LOWER(name) REGEXP ‘[[::]]’ OR name = ‘$name'»);
if ($db->num_rows() > 0)
{
$stop .= $lang[‘reg_err_20’];
}
Добавить ниже:
$ipb_dle_lan[0] = «Данное имя уже используется на форуме.»;
$db_ipb_user = «пользователь»;
$db_ipb_password = «пароль»;
$db_ipb_namedb = «имя_базы»;
$db_ipb_local = «localhost»;
$db_ipb_error = 1; // 1 — показывать ошибки в соединении с бд форума, 0 — нет
$db_prefix_ipb = «префикс_если_его_нету_оставить_пустым»;
$ipb = new db;
$ipb->connect($db_ipb_user, $db_ipb_password, $db_ipb_namedb, $db_ipb_local, $db_ipb_error);
$ipb_test_name = $ipb->super_query («SELECT COUNT(*) as count FROM {$db_prefix_ipb}members where name = ‘».strtolower($name).»‘»);
if ($ipb_test_name [‘count’] > 0) $stop .= $ipb_dle_lan[0];
Данный хак протестирован , работает единая регистрация только в одну сторону: Регистрируясь на сайте DLE вы автоматически регистрируетесь на форуме IP.Board