27 мая 2011
Единая регистрация с DLE 9.* + IP.Board 3.1.*
sasha_777 Категория: DATALIFE ENGINE » Модули
У нас вы можете скачать бесплатно Единая регистрация с DLE 9.* + IP.Board 3.1.*

Данный материал предоставлен сайтом Skripter.info исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Единая регистрация с DLE 9.* + IP.Board 3.1.*
Автор: неизвестный
Адаптация под новую версию: Herurg
Данный хук работает только с DLE 9.x + IP.Board 3.1.x (протестировано)



Открываем:

dle/engine/modules/reg[code]

Ищем:
require_once ENGINE_DIR . '/classes/parse.class.php';

Добавить ниже:

$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);

Найти:
global $lang, $db, $banned_info, $relates_word;

Заменить на:
global $lang, $db, $banned_info, $relates_word, $ipb, $ipb_dle_lan, $db_prefix_ipb;

Найти:
$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);
}

}

Открываем:
dle/engine/ajax/registration.php

Найти:
$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










Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
IGOR17 | 19 августа 2011 22:50
  • Группа: Посетители |
  • Комментарий: 1 (ссылка)

Тваю мать, перерыл весь гугл, что бы найти инструкцию, а не уже готовый мост, а нашёл тут случайно...спасибо.

Irina_shka | 6 октября 2011 20:25
  • Группа: Посетители |
  • Комментарий: 2 (ссылка)

Спасибо) Обязательно сделаю))))

Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.