Задать вопрос
Samuello
@Samuello
Учусь WEB программированию.

Что неправильно с кодом?

Только начал учить AJAX и PDO, написал код. Если не использовать AJAX, PHP обработчик работает правильно, при использовании AJAX пишет что поля пустые ('empty').

HTML

<form id="form_signin" method="POST">
            <h2 class="title">Авторизация</h2>
            <input type="text" name="ur_login" class="input" id="ur_login" placeholder="Логин">
            <input type="password" name="ur_password" class="input" id="ur_password" placeholder="Пароль">
            <button id="signin" name="signin">Войти</button>
        </form>

        <div class="error">
            <span id="error__text">Lorem ipsum</span>
        </div>


JS

$(document).ready(function() {

    $('#form_signin #signin').click(function(event) {

        event.preventDefault();

        let urLogin    = $('ur_login').val();
        let urPassword = $('ur_password').val();

        $.ajax({
            type: 'POST',
            url: 'http://script.test.loc/pdo/application/backend/forms/?form=signin',
            data: {
                ur_login: urLogin,
                ur_password: urPassword
            },

            beforeSend: function() {
                console.log('Идет обработка...');
            },

            success: function(result) {
                $('.error').addClass('error__active');
                $('#error__text').text(result);
            },
        });

    });

});


PHP

<?php

// Результаты обработки
// success  - Успешная авторизация
// notMatch - Неправильный логин или пароль
// empty    - Пустые поля
// notKnown - Неизвестная ошибка

$ur_login    = htmlspecialchars(trim($_POST['ur_login']));
$ur_password = htmlspecialchars(trim($_POST['ur_password']));

if (!empty($ur_login) && !empty($ur_password)) {
    $db_sql    = 'SELECT login, password FROM users WHERE login = :ur_login';
    $db_params = [':ur_login' => $ur_login];

    $db_stmt = $database->prepare($db_sql);
    $db_stmt->execute($db_params);

    $ur_user = $db_stmt->fetch(PDO::FETCH_OBJ);

    if ($ur_user) {
        if (password_verify($ur_password, $ur_user->password)) {
            echo 'success';
        }

        else {
            echo 'notMatch';
            exit();
        }
    }

    else {
        echo 'notMatch';
        exit();
    }
}

else if (empty($ur_login) && empty($ur_password)) {
    echo 'empty';
    exit();
}

else {
    echo 'notKnown';
    exit();
}

  • Вопрос задан
  • 173 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
$('ur_login')

Круто. Новый тэг появился.

$('ur_password')

Два новых тэга.

только начал учить AJAX и PDO

Начните ещё учить селекторы. Первым делом - погуглите, как обращаться к элементу по id.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы