1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем Sliva, 30 июл 2021.

  1. Автор темы
    Sliva

    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>




     

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