[Help] Обьеденить регистрацию на сайте и форуме

Тема в разделе "vBulletin", создана пользователем Dark Angell, 22 июл 2009.

Статус темы:
Закрыта.
  1. Dark Angell

    Dark Angell Читатель

    Заблокирован
    Регистр.:
    29 фев 2008
    Сообщения:
    1.036
    Симпатии:
    690
    Собственно вопрос по теме:
    есть сайт на движке дле и форум vB версии 3.8.3,нужно обьеденить регу сайт+форум,сразу говорю интеграции калиостро есть,но доп домен не хочу брать.В принципе нарыл в одном сайте такой код реги,авторизации и редактирования юзера через админку и сайт:
    PHP:
                /**
                 * Build a strings of keys and values to use in SQL insert
                 *
                 * @return Array [0] => keys string, [1] => values string
                 * @param $data Array
                 */
                
    function build_insert_string$data )
                {
                    global 
    $db;

                    
    $keys = Array();
                    
    $values = Array();

                    foreach( 
    $data as $key => $value )
                    {
                        
    $keys[] = $key;
                        
    $values[] = '"' $db->safesql$value ) . '"';
                    }

                    
    $keys implode','$keys );
                    
    $values implode','$values );

                    return Array( 
    $keys$values );
                }

                
    $dle_name $db->safesql$member_id['name'] );
                
    $ipb_member $db->super_query("SELECT id, name, mgroup,member_login_key FROM ibf_members WHERE name = '{$dle_name}'");

                if ( !
    $ipb_member['id'] )
                {
                    
    // Member logged into DLE but not found in IPB
                    // Lets create one !

                    
    $email $db->safesql($member_id['email']);
                    
    $regpassword $db->safesql($member_id['password']);
                    
    $add_time $db->safesql($member_id['reg_date']);
                    
    $name $db->safesql$member_id['name'] );
                    
    $_IP $db->safesql($_SERVER['REMOTE_ADDR']);

                    
    $salt substrstr_shuffle'abcdefghijklmnopqrstuvwzyxABCDEFGHJIKLMNOPQRSTUXYZ1234567890!@#$%^&*()' ), 0); // quick salt generator

                    
    $converge = Array
                    (
                        
    'converge_email'     => $email,
                        
    'converge_joined'    => $add_time,
                        
    'converge_pass_hash' => md5$salt $regpassword ),
                        
    'converge_pass_salt' => $salt
                    
    );


                    list( 
    $keys$values ) = build_insert_string$converge );
                    
    $db->query"INSERT INTO ibf_members_converge({$keys}) VALUES({$values});" );

                    
    $member_id $db->insert_id();

                    
    $login_key md5microtime() );

                    
    $member = Array
                    (
                         
    'id'                      => $member_id,
                         
    'name'                   => $name,
                         
    'members_l_username'      => strtolower$name ),
                         
    'members_created_remote' => 1,
                         
    'email'                  => $email,
                         
    'member_login_key'       => $login_key,
                         
    'member_login_key_expire' => time() + 3600 24 365,
                         
    'mgroup'                 => 3,
                         
    'posts'                  => 0,
                         
    'joined'                 => $add_time,
                         
    'ip_address'             => $_IP,
                         
    'view_sigs'              => 1,
                         
    'email_pm'               => 1,
                         
    'view_img'               => 1,
                         
    'view_avs'               => 1,
                         
    'restrict_post'          => 0,
                         
    'view_pop'               => 1,
                         
    'msg_total'              => 0,
                         
    'new_msg'                => 0,
                         
    'coppa_user'             => 0,
                         
    'language'               => 'ru',
                         
    'subs_pkg_chosen'        => 0,
                         
    'members_display_name'   => $name,
                         
    'members_l_display_name'  => strtolower$name )
                    );


                    list( 
    $keys$values ) = build_insert_string$member );
                    
    $db->query"INSERT INTO ibf_members({$keys}) VALUES({$values});" );

                    
    $extra = Array
                    (
                        
    'id' => $member_id,
                        
    'vdirs' => "in:Входящие|sent:Отправленные"
                    
    );

                    list( 
    $keys$values ) = build_insert_string$extra );
                    
    $db->query"INSERT INTO ibf_member_extra({$keys}) VALUES({$values});" );

                    
    // XBTT user
                    
    $xbt_user = Array
                    (
                        
    'uid'          => $member_id,
                        
    'name'          => $name,
                        
    'email'          => $email,
                        
    'added'          => $add_time,
                        
    'peers_limit' => 1,
                        
    'torrent_pass' => md5microtime() . time() )
                    );

                    list( 
    $keys$values ) = build_insert_string$xbt_user );
                    
    $db->query"INSERT INTO users({$keys}) VALUES({$values});" );

                    
    // Newly created member
                    
    $ipb_member = Array( 'id' => $member_id'name' => $name'mgroup' => 3'member_login_key' => $login_key );
                }

                
    // Login IPB member

                
    $ipb_member['id'] = (int) $ipb_member['id'];

                
    $db->query"DELETE FROM ibf_sessions WHERE member_id = {$ipb_member['id']});
                
    $session_id  md5uniqid(microtime()) );

                
    $session = Array
                (
                    
    'id'                 => $session_id,
                    
    'member_name'        => $ipb_member['name'],
                    
    'member_id'          => $ipb_member['id'],
                    
    'member_group'       => $ipb_member['mgroup'],
                    
    'login_type'         => 0,
                    
    'running_time'       => time(),
                    
    'ip_address'         => $_IP,
                    
    'browser'            => $_SERVER['HTTP_USER_AGENT'],
                    
    'location'           => 'idx,0,',
                    
    'in_error'           => 0,
                    
    'location_1_type'    => '',
                    
    'location_1_id'      => 0,
                    
    'location_2_type'    => '',
                    
    'location_2_id'      => 0,
                    
    'location_3_type'    => '',
                    
    'location_3_id'      => 0,
                  );

                list( 
    $keys$values ) = build_insert_string$session );
                
    $db->query"INSERT INTO ibf_sessions({$keys}) VALUES({$values});" );

                
    set_cookie'member_id'$ipb_member['id'], 365 );
                
    set_cookie'pass_hash'$ipb_member['member_login_key'], 365 );
                
    set_cookie'session_id'$session_id365 );
            }
    который прописываеться в engine/modules/sitelogin.php это для входа и авторизации.
    Код для регистрации engine/modules/register.php
    PHP:
            /**
             * Adding IPB member
             */

                /**
                 * Build a strings of keys and values to use in SQL insert
                 *
                 * @return Array [0] => keys string, [1] => values string
                 * @param $data Array
                 */

                
    if ( !function_exists 'build_insert_string') )
                {
                    function 
    build_insert_string$data )
                    {
                        global 
    $db;

                        
    $keys = Array();
                        
    $values = Array();

                        foreach( 
    $data as $key => $value )
                        {
                            
    $keys[]  = $key;
                            
    $values[] = '"' $db->safesql$value ) . '"';
                        }

                        
    $keys implode','$keys );
                        
    $values implode','$values );

                        return Array( 
    $keys$values );
                    }
                }

                
    $salt substrstr_shuffle'abcdefghijklmnopqrstuvwzyxABCDEFGHJIKLMNOPQRSTUXYZ1234567890!@#$%^&*()' ), 0); // quick salt generator

                
    $converge = Array
                (
                    
    'converge_email'     => $email,
                    
    'converge_joined'    => $add_time,
                    
    'converge_pass_hash' => md5$salt $regpassword ),
                    
    'converge_pass_salt' => $salt
                
    );


                list( 
    $keys$values ) = build_insert_string$converge );
                
    $db->query"INSERT INTO ibf_members_converge({$keys}) VALUES({$values});" );

                
    $member_id $db->insert_id();

                
    $login_key md5microtime() );

                
    $member = Array
                (
                     
    'id'                      => $member_id,
                     
    'name'                   => $name,
                     
    'members_l_username'      => strtolower$name ),
                     
    'members_created_remote' => 1,
                     
    'email'                  => $email,
                     
    'member_login_key'       => $login_key,
                     
    'member_login_key_expire' => time() + 3600 24 365,
                     
    'mgroup'                 => 3,
                     
    'posts'                  => 0,
                     
    'joined'                 => $add_time,
                     
    'ip_address'             => $_IP,
                     
    'view_sigs'              => 1,
                     
    'email_pm'               => 1,
                     
    'view_img'               => 1,
                     
    'view_avs'               => 1,
                     
    'restrict_post'          => 0,
                     
    'view_pop'               => 1,
                     
    'msg_total'              => 0,
                     
    'new_msg'                => 0,
                     
    'coppa_user'             => 0,
                     
    'language'               => 'ru',
                     
    'subs_pkg_chosen'        => 0,
                     
    'members_display_name'   => $name,
                     
    'members_l_display_name'  => strtolower$name )
                );


                list( 
    $keys$values ) = build_insert_string$member );
                
    $db->query"INSERT INTO ibf_members({$keys}) VALUES({$values});" );

                
    $extra = Array
                (
                    
    'id' => $member_id,
                    
    'vdirs' => "in:Входящие|sent:Отправленные"
                
    );

                list( 
    $keys$values ) = build_insert_string$extra );
                
    $db->query"INSERT INTO ibf_member_extra({$keys}) VALUES({$values});" );


                
    // XBTT user (auto created)
                
    $xbt_user = Array
                (
                    
    'uid'          => $member_id,
                    
    'name'          => $name,
                    
    'email'          => $email,
                    
    'added'          => $add_time,
                    
    'peers_limit' => 1,
                    
    'torrent_pass' => md5microtime() . time() )
                );

                list( 
    $keys$values ) = build_insert_string$xbt_user );
                
    $db->query"INSERT INTO users({$keys}) VALUES({$values});" );


                
    /**
                 * Create IPB session
                 */
                
    $session_id  md5uniqid(microtime()) );

                
    $session = Array
                (
                    
    'id'                 => $session_id,
                    
    'member_name'        => $name,
                    
    'member_id'          => $member_id,
                    
    'member_group'       => 3,
                    
    'login_type'         => 0,
                    
    'running_time'       => time(),
                    
    'ip_address'         => $_IP,
                    
    'browser'            => $_SERVER['HTTP_USER_AGENT'],
                    
    'location'           => 'idx,0,',
                    
    'in_error'           => 0,
                    
    'location_1_type'    => '',
                    
    'location_1_id'      => 0,
                    
    'location_2_type'    => '',
                    
    'location_2_id'      => 0,
                    
    'location_3_type'    => '',
                    
    'location_3_id'      => 0,
                  );

                list( 
    $keys$values ) = build_insert_string$session );
                
    $db->query"INSERT INTO ibf_sessions({$keys}) VALUES({$values});" );

                
    set_cookie 'member_id'$member_id365 );
                
    set_cookie 'pass_hash'$login_key365 );
                
    set_cookie 'session_id'$session_id365 );

            }

        }

    }
    Код для редактирования юзера в админ панели сайта engine/inc/editusers.php:
    PHP:
            /**
             * Adding IPB member
             */

                /**
                 * Build a strings of keys and values to use in SQL insert
                 *
                 * @return Array [0] => keys string, [1] => values string
                 * @param $data Array
                 */

                
    if ( !function_exists 'build_insert_string') )
                {
                    function 
    build_insert_string$data )
                    {
                        global 
    $db;

                        
    $keys = Array();
                        
    $values = Array();

                        foreach( 
    $data as $key => $value )
                        {
                            
    $keys[]  = $key;
                            
    $values[] = '"' $db->safesql$value ) . '"';
                        }

                        
    $keys implode','$keys );
                        
    $values implode','$values );

                        return Array( 
    $keys$values );
                    }
                }

                
    $salt substrstr_shuffle'abcdefghijklmnopqrstuvwzyxABCDEFGHJIKLMNOPQRSTUXYZ1234567890!@#$%^&*()' ), 0); // quick salt generator

                
    $converge = Array
                (
                    
    'converge_email'     => $email,
                    
    'converge_joined'    => $add_time,
                    
    'converge_pass_hash' => md5$salt $regpassword ),
                    
    'converge_pass_salt' => $salt
                
    );


                list( 
    $keys$values ) = build_insert_string$converge );
                
    $db->query"INSERT INTO ibf_members_converge({$keys}) VALUES({$values});" );

                
    $member_id $db->insert_id();

                
    $login_key md5microtime() );

                
    $member = Array
                (
                     
    'id'                      => $member_id,
                     
    'name'                   => $name,
                     
    'members_l_username'      => strtolower$name ),
                     
    'members_created_remote' => 1,
                     
    'email'                  => $email,
                     
    'member_login_key'       => $login_key,
                     
    'member_login_key_expire' => time() + 3600 24 365,
                     
    'mgroup'                 => 3,
                     
    'posts'                  => 0,
                     
    'joined'                 => $add_time,
                     
    'ip_address'             => $_IP,
                     
    'view_sigs'              => 1,
                     
    'email_pm'               => 1,
                     
    'view_img'               => 1,
                     
    'view_avs'               => 1,
                     
    'restrict_post'          => 0,
                     
    'view_pop'               => 1,
                     
    'msg_total'              => 0,
                     
    'new_msg'                => 0,
                     
    'coppa_user'             => 0,
                     
    'language'               => 'ru',
                     
    'subs_pkg_chosen'        => 0,
                     
    'members_display_name'   => $name,
                     
    'members_l_display_name'  => strtolower$name )
                );


                list( 
    $keys$values ) = build_insert_string$member );
                
    $db->query"INSERT INTO ibf_members({$keys}) VALUES({$values});" );

                
    $extra = Array
                (
                    
    'id' => $member_id,
                    
    'vdirs' => "in:Входящие|sent:Отправленные"
                
    );

                list( 
    $keys$values ) = build_insert_string$extra );
                
    $db->query"INSERT INTO ibf_member_extra({$keys}) VALUES({$values});" );


                
    // XBTT user (auto created)
                
    $xbt_user = Array
                (
                    
    'uid'          => $member_id,
                    
    'name'          => $name,
                    
    'email'          => $email,
                    
    'added'          => $add_time,
                    
    'peers_limit' => 1,
                    
    'torrent_pass' => md5microtime() . time() )
                );

                list( 
    $keys$values ) = build_insert_string$xbt_user );
                
    $db->query"INSERT INTO users({$keys}) VALUES({$values});" );


                
    /**
                 * Create IPB session
                 */
                
    $session_id  md5uniqid(microtime()) );

                
    $session = Array
                (
                    
    'id'                 => $session_id,
                    
    'member_name'        => $name,
                    
    'member_id'          => $member_id,
                    
    'member_group'       => 3,
                    
    'login_type'         => 0,
                    
    'running_time'       => time(),
                    
    'ip_address'         => $_IP,
                    
    'browser'            => $_SERVER['HTTP_USER_AGENT'],
                    
    'location'           => 'idx,0,',
                    
    'in_error'           => 0,
                    
    'location_1_type'    => '',
                    
    'location_1_id'      => 0,
                    
    'location_2_type'    => '',
                    
    'location_2_id'      => 0,
                    
    'location_3_type'    => '',
                    
    'location_3_id'      => 0,
                  );

                list( 
    $keys$values ) = build_insert_string$session );
                
    $db->query"INSERT INTO ibf_sessions({$keys}) VALUES({$values});" );

                
    set_cookie 'member_id'$member_id365 );
                
    set_cookie 'pass_hash'$login_key365 );
                
    set_cookie 'session_id'$session_id365 );
    собственно как надо поправить переменные из этих трёх кусков чтобы авторизация+рега+редактирование пахало при условии что будет всё идти через сайт и работало без косяков,так как на форуме рега будет ссылаться на сайт и через него всё будет производиться ;).
    ЗЫ.С php только начал дружить :ah:
     
  2. z3rg

    z3rg

    Регистр.:
    2 фев 2007
    Сообщения:
    731
    Симпатии:
    336
    а нафига через форму, сразу инсерт запрос в базу на добавление и не нужно этого лишнего кода
     
  3. Dark Angell

    Dark Angell Читатель

    Заблокирован
    Регистр.:
    29 фев 2008
    Сообщения:
    1.036
    Симпатии:
    690
    z3rg яж говорю с пыхом ток начал дружить,и то нет времени осваивать,друг запряг портал подымать,ща вкалываю шо ппц,поэтому и спрашиваю как и что,или облегчить код связующей реги
     
  4. z3rg

    z3rg

    Регистр.:
    2 фев 2007
    Сообщения:
    731
    Симпатии:
    336
    в дле ->engene -> modules-> register.php
    там ищи строчку
    PHP:
    $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."')");
        
    если база форума и дле в 1
    добавь такойже запрос рядом только посмотри соответствия ячеек в vb, если необходимо поменяй местами

    тоесть так, смотри дальше сам я немного начал до 6 ячейки
    PHP:
    $db->query("INSERT INTO vb_users (usergroupid, username, password, passworddate, email, user_group, info, signature, favorites, xfields, logged_ip) VALUES ('".$config['reg_group']."', '$name', '$regpassword', '$add_time', '$email', '', '', '', '', '', '".$_IP."')");
        
     
    Dark Angell нравится это.
  5. Dark Angell

    Dark Angell Читатель

    Заблокирован
    Регистр.:
    29 фев 2008
    Сообщения:
    1.036
    Симпатии:
    690
    тако впорос ещё,решил добавить пару строк в регистрацию по поводу общих ПС и ЛС,взял код из старой интеграции калиостро,собственно интересует
    задействует двиг её или нет?
     
  6. Kiosaki

    Kiosaki

    Регистр.:
    20 мар 2009
    Сообщения:
    175
    Симпатии:
    12
    Если автор не против, задам тоже вопрос, касаемо этой темы.

    Есть ли в свободном доступе полная интеграция ДЛЕ с Булкой? DLE + vBulletin v1.5
    Т.е. не просто общая БД юзеров, но и:
    -На сайт можно повесить ссылку "Обсудить на форуме" при переходе по которой автоматически создается(если нету) тема на форуме.
    -Возле ссылки можно выводить количство постов обсуждения
    ?
     
  7. Dark Angell

    Dark Angell Читатель

    Заблокирован
    Регистр.:
    29 фев 2008
    Сообщения:
    1.036
    Симпатии:
    690
    нет и не будет ;)
     
  8. Kiosaki

    Kiosaki

    Регистр.:
    20 мар 2009
    Сообщения:
    175
    Симпатии:
    12
    Почему так уверенно "и не будет"? О_о

    Неужели это на столько востребованная вещь, что ни один программер без денег никогда не сделает и не выложит подобное?

    ЗЫ: На Джумле полно бесплатных вещей, а на ДЛЕ...эх. Хотя ДЛЕ лучше джумлы в других планах...
     
  9. Dark Angell

    Dark Angell Читатель

    Заблокирован
    Регистр.:
    29 фев 2008
    Сообщения:
    1.036
    Симпатии:
    690
    есть бесплатный аналог от финалсофта,интеграцию калиостро невозможно декодить по одной простой причине,деобфуксация после дезенда почти непреодалима ;)
     
  10. Kiosaki

    Kiosaki

    Регистр.:
    20 мар 2009
    Сообщения:
    175
    Симпатии:
    12
    Это не аналог. Это просто интеграция юзеров на ДЛЕ и на Булке. И все.
    Хотя да, буду ее юзать, автороу спасибо, что сделал бесплатно. Хотя бы так...

    Но мне больше нужна другая интеграция, как уже говорил выше, да и в своем теме...

    Честно, плохо ориентруюсь в этих терминах, но после того, как погуглил возник вопрос - разве код у Калиостро на столько сложен?

    Я нашел взломанную его интеграцию ДЛЕ с ИПБ, то вроде бы ничего сложного в коде) там заменить, там добавить - стандартная вещь. Что там декодить то? Это же не сложная программа. Просто достать нужно и все.
    (кстате, что интересно, цена интеграции ДЛЕ с другими, не Вбулетенскими форумами, значительно дешевле и уже более реальней...( )

    В общем ясно, что не достану бесплатно. Значит обойдусь без этого. Или есть пару знакомых программеров, они связывали Булку со своим самописным движком. Поспрашиваю как сделали и сам попробую интегрировать по тому же принципу) Вряд ли получится, не программер, но попробую)
     
Статус темы:
Закрыта.