Форма авторизации HTML&PHP в модальном окне

106
15 марта 2021, 21:10

Есть форма с авторизацией. Когда вводим логин и пароль которые не содержаться в СУБД, то страница просто обновляется. Это можно было бы сделать намного проще, но вот форма находится в модальном окне. Т.е. если делать проверку уже в php файле, тогда только при нажатии на кнопку авторизации срабатывает файл php и выводит сообщении об ошибке. Дык в чем суть, можно ли сделать проверку на существование пользователя прямо в HTML, ну или на крайняк в js? Спасибо.

Answer 1

Используйте ajax

  1. Делаем отдельный обработчик для авторизации auth.php
$errors = [];
if (!authUser($login, $pass)) { // некий метод для авторизации
    $errors[] = 'Ошибка авторизации';
}
// тут мы либо рендерим форму авторизации с учетом ошибки
return render($errors);
// или возвращаем только ошибки
return json_encode($errors);
  1. Делаем обработчик формы в js
$('.auth-form').on('submit', function(e){
    e.preventDefault(); // чтоб страница не обновилась
    var form = $(this);
    $.ajax({
        url: form.attr('action'),
        data: form.serialize(),
        success: function(response){
            // если это html
            $('.form-container').html(response);
            // если это json
            $('.errors', form).html(''); // чистим ошибки
            if (response.errors) {
                for(var i=0; i<response.errors.length; i++) {
                   $('.errors', form).append('<p>'+response.errors[i]+'</p>');
                }
            } else {
                // ошибок нет, скорее всего нас авторизовали
                // можно просто перезагрузить страницу
                location.href = location.href;
            }
        }
    });
});
READ ALSO
Symfony: запуск фонового процесса и отслеживание его состояния

Symfony: запуск фонового процесса и отслеживание его состояния

Возник вопрос следующего характераЕсть кнопка, при нажатии на которую посылается AJAX-запрос на контроллер

91
Ошибка при использовании curl

Ошибка при использовании curl

Я новичок в php, поэтому не судите строго

94
как залить пост на wordpress с помощью curl bash

как залить пост на wordpress с помощью curl bash

есть функция стандартная wp_insert_post() как можно вставить пост с помощью этой функции через bash

70
Java Json выгрузка разных полей

Java Json выгрузка разных полей

Есть объект с несколькими полями который отправляется как Json запрос на сервер

111