Как авторизовать пользователей с помощью ajax и php?

#javascript #php #jquery #ajax #authentication

#javascript #php #jquery #ajax #аутентификация

Вопрос:

Я добавил функцию ajax jquery для более удобного входа в систему, но она по-прежнему не работает. Что я делаю не так? Спасибо.

form_log.php увядающие головки:

     <script type="text/javascript"> 
$(document).ready(function() {

    $('#myform').submit(function() {

        $.ajax({
            type: "POST",
            url: 'login.php',
            data: {
                username: $("#username").val(), //id
                password: $("#password").val()
            },
            success: function(data)
            {
                if (data === 'Correct') {
                    window.location.replace('index.php');
                }
                else {
                    alert(data);
                }
            }
        });

    });

});
</script>
  

И в form_log.php html-тела:

     <form id="myform">

    <label for="username">Username</label>
    <input type="text" id="username" value="waqmaz@gmail.com" />

    <label for="password">Password</label>
    <input type="text" id="password" value="Lol123" />

    <input type="submit" id="login" value="Login"/>

</form>
  

Теперь login.php:

     <?php
session_start();
require("funkcje_bazy.php");
//require('fff.php');

$lacz = lacz_bd();

        $nazwa_uz_l = $_POST['username'];//nazwa_uz_l
        $haslo_l = $_POST['password']; //haslo_l

        $wynik = $lacz->query("SELECT * FROM uzytkownicy WHERE  email='".$nazwa_uz_l."' AND haslo = '".$haslo_l."' AND aktywacja IS NULL ");            

        if($wynik->num_rows>0) {
            $_SESSION['prawid_uzyt'] = $nazwa_uz_l;
            echo ('Correct');
        } 
        else 
        {
            echo 'Incorrect username/password';
        }

?>
  

В верхней части всех этих 2 файлов у меня есть session_start(); включая index.php .

Логин не работает. Когда я нажимаю «Отправить ввод», ничего не происходит. Я новичок в jquery ajax. Я проверяю правильные ответы, спасибо.

Комментарии:

1. Какие-либо ошибки в консоли ..?

2. На консоли нет ошибок.

3. какова ценность данных внутри успешного обратного вызова ..?

4. Я не понимаю. Мои данные: data: { username: $(«#username»).val(), //id password: $(«#password»).val() }, я ставлю waqmaz@gmail.com для ввода имени пользователя и Lol123 для пароля.

5. Вы включили свою библиотеку javascript (например, jQuery) в заголовок HTML?

Ответ №1:

Попробуйте предотвратить действие submit кнопки по умолчанию с помощью event.preventDefault() , что означает блокировку обратной отправки, которая вот-вот произойдет,

  $('#myform').submit(function(e) {
   e.preventDefault();
   .
   .

 //rest of your code.
  

Комментарии:

1. Вау, это работает! Большое вам спасибо. Зачем мне нужно предотвращать дефолт?

2. @glapa.wojciech Поскольку мы собираемся выполнять обратную отправку через ajax, если мы не предотвратим действие по умолчанию, форма будет отправлена, как следствие, страница будет перезагружена.. И, кстати, рад помочь ..!

Ответ №2:

Альтернативой является использование:

  $('#login').click(function() {