Показать сообщение отдельно
Старый 22.10.2011, 17:18 Вверх   #1
Коварный тип
 
Аватар для Serberg
Serberg вне форума
Доп. информация
Хорошо Создание объединенной системы регистрации на DLE 9.3 и IPB 3.1.4

Создание объединенной системы регистрации на DLE 9.3 и IPB 3.1.4

Описание: Данная интеграция позволяет регистрируясь на DLE движке авторизироваться с этим же аккаунтов на форуме IPB.

Открываем: dle/engine/modules/register.php
Находим:

PHP код:
require_once ENGINE_DIR . '/classes/parse.class.php'; 
Добавляем ниже:

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); 
Находим:

PHP код:
global $lang, $db, $banned_info, $relates_word; 
Меняем на:

PHP код:
global $lang, $db, $banned_info, $relates_word, $ipb, $ipb_dle_lan, $db_prefix_ipb; 
Находим:

PHP код:
$row = $db->super_query( "SELECT COUNT(*) as count FROM " . USERPREFIX . "_users WHERE email = '$email' OR LOWER(name) REGEXP '[[:<:]]{$search_name}[[:>:]]' OR name = '$name'" ); 
Добавляем ниже:

PHP код:
$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]; 
Находим:

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 . "')" ); 
Добавляем ниже:

PHP код:
 $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']) ); // для бакланозавров и копипастеров, это взято с bormotuhi.net
 
$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'"); 
Находим:

PHP код:
?> 
Вставляем выше:

PHP код:
 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

Находим:

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'];
 } 
Добавляем ниже:

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);
 
$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]; 
Статью нашел в интернете и малость пофиксил, ибо по всему интернету тупой копипаст прямо с ошибкой. Для бормотухи без ошибки )

Последний раз редактировалось Serberg; 22.10.2011 в 17:23..
  Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
 
Время генерации страницы 0.08187 секунды с 9 запросами