Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Туториал Авторизация DLE без перезагрузки

Sliva

Активный участник
Баллы
61
Итак, пишу эту тему для тех, кто хотел AJAX авторизацию (без перезагрузки сайта).​
1. Переходим в engine/modules/main.php.

2. Находим строку:

PHP:
if($remove_canonical) {
    $tpl->result['main'] = preg_replace( "#<link rel=['\"]canonical['\"](.+?)>#i", "", $tpl->result['main'] );
}

и вставляем после неё такой код:

PHP:
if(($_POST['login'] == "submit") && ($_POST['ajax'] === "1")) {
$tpl->result['main'] = $login_message;
}

3. Переходим в engine/modules/sitelogin.php.

и после

PHP:
$is_logged = false;
$member_id = array ();
$attempt_login = false;

Вставляем:

PHP:
if( isset( $_POST['login'] ) && $_POST['login_name'] && $_POST['login_password'] && $_POST['login'] == "submit" ) {
    if ($_POST['ajax'] === "1") {
$_POST['login_name'] = convert_unicode( $_POST['login_name'], $config['charset'] );
$_POST['login_password'] = convert_unicode( $_POST['login_password'], $config['charset'] );
}

4. Здесь же находим

PHP:
$db->query( "UPDATE LOW_PRIORITY " . USERPREFIX . "_users SET {$new_pass_hash}lastdate='{$_TIME}', hash='{$hash}', logged_ip='{$_IP}' WHERE user_id='{$member_id['user_id']}'" );

и после вставляем это:

PHP:
$login_message = "logged";

Здесь же находим

PHP:
if ($config['auth_metod']) msgbox( $lang['login_err'], $lang['login_err_3'] ); else msgbox( $lang['login_err'], $lang['login_err_1'] );

и после вставляем это:

PHP:
$login_message = $lang['login_err_1'];

Здесь же находим

PHP:
$lang['login_err_2'] = str_replace("{time}", $config['login_ban_timeout'], $lang['login_err_2']);
        msgbox( $lang['login_err'], $lang['login_err_2'] );

и после вставляем это:

PHP:
$login_message = $lang['login_err_2'];

Здесь же находим

PHP:
msgbox( $lang['login_err'], $lang['ip_block_login'] );

и после вставляем это:

PHP:
$login_message = $lang['ip_block_login'];

5. Создаем js файл в папке templates/ваш_шаблон, назовем его index.js

Вставляем в него:

Код:
function sitelogin(){
var uname=$("input[name='login_name']").val();
var upassword=$("input[name='login_password']").val();
$.post("/index.php",{login_name:""+uname+"",login_password:""+upassword+"",login:"submit",ajax:"1"},function(data){
if (data == "logged") {
swal("Хорошая работа, Олег!", "Ты успешно вошел!", "success");
setTimeout(function() { window.location.replace(window.location.pathname); }, 2500);
} else {
swal("Ошибка!", ""+data+"", "error");
}
});
}

6. В папке с вашим шаблоном находим файл main.tpl и между тегами <head> </head> вставляем это:

Код:
<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>

а перед закрывающим тегом </body> вставляем это:

Код:
<script type="text/javascript" src="{THEME}/index.js"></script>
<script type="text/javascript" src="//code.jquery.com/jquery-3.0.0.min.js"></script>
Да-да.. В DLE есть jquery, но пусть лучше так.


7. Ну, и в конце концов переходим в templates/ваш_шаблон/login.tpl и вставляем вашу кнопку

Код:
<button onclick="sitelogin(); return false;" type="submit">Войти</button>





​
 

Поделиться этой страницей

Назад
Верх