Главная

Добавить
статью


Форум


Новости


RSS


Обратная
связь
друзья


теги


реклама



Для вебмастера » Invision Power BoardЕдиная регистрация с DLE 9.* + IP.Board 3.1.*

Добавил madjesty | 16-05-2011, 14:44 | Мнений: 0 | Заглянули 12561


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

Открываем: dle/engine/modules/reg

Ищем:

 

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 '[[:<:]]{$search_name}[[:>:]]' 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 < $len; $i++ )
        {
            $num   = rand(33, 126);

            if ( $num == '92' )
            {
                $num = 93;
            }

            $salt .= chr( $num );
        }

        return $salt;
    }

    function generate_compiled_passhash($salt, $md5_once_password)
    {
        return md5( md5( $salt ) . $md5_once_password );
    }

        function generate_auto_log_in_key($len=60)
    {
        $pass = $this->generate_password_salt( $len );

        return md5($pass);
    }

}


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

Найти:

 

$db->query ("SELECT name FROM " . USERPREFIX . "_users WHERE LOWER(name) REGEXP '[[:<:]]{$search_name}[[:>:]]' 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

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий


календарь



опрос



счетчики



Реклама



Логин: (регистрация? Пароль (забыл?):