Ulogin dle единая регистрация на сайте соц сети

Новая версия модуля dle с исправлениями uLogin v2.1 для DLE 9.5, 9.4, 9.3-позволит пользователям без регистрации получить единый доступ к ресурсам сайта с помощью аккаунта социальной сети (Google, Яндекс, Mail, ВКонтакте, Facebook и др.), а владельцам веб-ресурсов —получить дополнительный приток клиентов из социальных сетей и популярных порталов
uLoginDLEединая регистрация на сайте соц сети
Обновление увеличение размера аватарки.txt
Обновил модуль устранен баг с аватарами спасибо Діма Ваврійчук обратившего на это внимание. У того у кого модуль уже установлен можно просто заменить файл модуля ulogin.php и изменить место подключения модуля в файле init.php.
Конфиденциальность ваших данных и безопасный доступ к информации в ваших учетных записях.
Возможность выбрать наиболее подходящий для вас способ идентификации (через популярные социальные сети и порталы).
Преимущества для владельцев веб-ресурсов:
– Простой понятный пользовательский интерфейс.
– Легкость и быстрота установки, настройки и управления виджетом uLogin.
– Поддержка различных способов авторизации пользователей.
– Дополнительный приток клиентов из популярных социальных сетей и порталов.
– Единое API получения данных пользователя (все данные предоставляются в
едином формате).
– Дополнительная возможность получения адреса электронной почты, номера телефона и другой информации о пользователе.
Для начала понадобится регистрация на веб-ресурсе ulogin ru
В файл index.php
после
$tpl->set ( '{speedbar}', $tpl->result['speedbar'] );
Вставить
$tpl->set( '{ulogin}', urlencode('http://' . $_SERVER['HTTP_HOST'] .$_SERVER['REQUEST_URI'] ));
В файл init.php в папке engine Внимание в этом месте в отличи от старой было изменено место вставки
после
if ($config['allow_registration'] == "yes") {
Вставить
require_once ENGINE_DIR . '/modules/ulogin.php';
В файл engine/inc/options.php
после
showRow( $lang['opt_sys_reggroup'], $lang['opt_sys_reggroupd'], makeDropDown( $sys_group_arr, "save_con[reg_group]", $config['reg_group'] ) );
Вставить
showRow( $lang['opt_sys_regulogin'], $lang['opt_sys_regulogind'], makeDropDown( $sys_group_arr, "save_con[reg_group_ulogin]", $config['reg_group_ulogin'] ) );
В файл language/Russian/adminpanel.lng
после
'wysiwyg_language' => "ru",
Вставить
'opt_sys_regulogin' => "Установить пользователей авторизуются через ULogin в группе:", 'opt_sys_regulogind' => "Выберите группу в которую будут установлены пользователи для авторизации через ULogin",
Настройка :
Зайти в Админ панель – Настройки системы – Настройки пользователей
Выставить параметр «Помещать пользователей авторизуются через ULogin в группе:»
Предварительно можно создать спец. группу, например «ULogin»
PS. там есть такая тонкость в uLogin данные которые передаются на блог можно поправить
widget.js?display=panel&fields=first_name,last_name,bdate,email,nickname,photo&providers=vkontakte,m ailru,facebook,google,yandex&hidden=openid,odnokla ssniki,livejournal,twitter&redirect_uri={ulogin}
Чем их больше тем и логины будут более правдоподобные скажем ник и дата рождения и тд
Должен функционировать Data-Life Engine 9.5 и 8.5
Источник : Seozalex (seozalex ru)
Рекомендуем модули на dle uLogin единая регистрация на сайте социальной сети
ulogin_2_dle.zip [48,39 Kb] (cкачиваний: 387)
Рабочая авторизация на сайте через api в dle
Не знаю, как сейчас обстоят дела со встроенным API в CMS DataLife Engine, но в релизах ветки 10.* и 11.* точно есть одна проблема. А именно – при использовании метода:
$dle_api->external_auth($login, $password);
вместо реальной авторизации происходит простая проверка корректности логина и пароля указанного пользователя.
Очень странно, что в официальной документации этот метод описывается как «Авторизация по логину и паролю», хотя на деле, как я уже сказал ранее, происходит проверка корректности указанных данных.
Уверен, что многие, кто кастомизирует этот движок, столкнулись с этой проблемой, как, собственно, и я.
Весьма красивое решение мне удалось найти, создавая один из своих модулей, и выглядит оно так:
ini_set('error_reporting', 0);
ini_set('display_errors', 0);
define('DATALIFEENGINE', true);
define('ROOT_DIR', substr(dirname(__FILE__), 0, -12));
define('ENGINE_DIR', ROOT_DIR.'/engine');
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest') {
include ENGINE_DIR.'/data/config.php';
require_once ENGINE_DIR.'/modules/functions.php';
include ENGINE_DIR.'/api/api.class.php';
$login = (string)$_POST['login']; // Логин пользователя
$password = (string)$_POST['password']; // Пароль пользователя
if($dle_api->external_auth($login, $password)) {
$_POST['login_name'] = $login;
$_POST['login_password'] = $password;
$_POST['login'] = 'submit';
dle_session();
require_once ENGINE_DIR.'/modules/sitelogin.php';
echo '<script>window.location.replace(window.location.pathname);</script>'; // Обновляем страницу после авторизации
} else {
echo 'Данные не верны!';
}
}
В этот PHP-скрипт (обработчик, который нужно размещать в папке /engine/ajax/ вашего сайта) через AJAX передаются данные, которые проверяются на корректность авторизации (через API) и уже посредством стандартной функции CMS происходит авторизация на сайте.
Стоит отметить, что способ универсален и не зависит от версии CMS.
Если что-то вам показалось непонятным – не стесняйтесь и задавайте свои вопросы в комментариях.
Хак единая регистрация для форума с dle и ip.board 3.1
«Автор:» неизвестный
Адаптация под новую версию: Herurg
Данный работает только хак с DLE 9.x IP.Board 3.1.x (протестировано)
Итак установка :Хак Единая регистрация для форума с DLE и IP.Board 3.1
Ищем:
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'");
Найти:
?>
Вот тут другой вариант в с register.php..
dle/engine/modules/register.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); }}
Вставить выше:
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
Установка ЗАКОНЧЕНА!
Рекомендуем скачать хак Единая регистрация для форума с DLE 9.x и IP.Board 3.1
edinaya-registraciya-s-dle-9.-ip.board-3.1.rar [2,58 Kb] (cкачиваний: 108)