Задать вопрос
@alexei_2002

Как правильно обработать php скрипт через ajax?

Есть php скрипт с проверкой логина и пароля в БД, необходимо выполнить его без перезагрузки страницы
Реально ли это?
Проблема в том, что ajax неправильно отрабатывает (скорее всего делаю что-то неправильно)
Без разницы ввожу ли я логин и пароль в поля или не ввожу, всегда выдает то что я их неправильно ввел
Без ajax`a скрипт отрабатывал правильно, происходил редирект на главную страницу сайта

Файл login.php
<button id = "sub" name="submit" class="login100-form-btn">Войти</button>
<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
<script src="ajax.js"></script>

Файл ajax.js
$("#sub").on('click', function() {
    $.post("login_ajax.php", { submit: "submit"})   
        .done(function( data ) {
            alert( "Сообщение: " + data );
    });
});

Файл login_ajax.php
<?php
//Авторизация пользователя

//Подключаем скрипт с данными для подключения к БД
include 'connection.php';

// Функция для генерации случайной строки
function generateCode($length=6) {
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789";
    $code = "";
    $clen = strlen($chars) - 1;
    while (strlen($code) < $length) {
            $code .= $chars[mt_rand(0,$clen)];
    }
    return $code;
}

// Соединяемся с БД
$link = mysqli_connect($host, $user, $password, $database) 
or die("Ошибка подключения к базе данных! ". mysqli_error($link));

if(isset($_POST['submit']))
{
    // Вытаскиваем из БД запись, у которой логин равняется введенному
    $query = mysqli_query($link,"SELECT user_id, user_password FROM users WHERE user_login='".mysqli_real_escape_string($link,$_POST['login'])."' LIMIT 1");
    $data = mysqli_fetch_assoc($query);

    // Сравниваем пароли
    if($data['user_password'] === md5(md5($_POST['password'])))
    {
        // Генерируем случайное число и шифруем его
        $hash = md5(generateCode(10));

        if(!empty($_POST['not_attach_ip']))
        {
            // Если пользователя выбрал привязку к IP
            // Переводим IP в строку
            $insip = ", user_ip = INET_ATON('".$_SERVER['REMOTE_ADDR']."')";
        }

        // Записываем в БД новый хеш авторизации и IP
        mysqli_query($link, "UPDATE users SET user_hash = '".$hash."' ".$insip." WHERE user_id = '".$data['user_id']."'");

        // Ставим куки
        setcookie("id", $data['user_id'], time() +60*60*24*30, "/");
        setcookie("hash", $hash, time() +60*60*24*30, "/", null, null, true); // httponly !!!
        // Переадресовываем браузер на страницу проверки нашего скрипта
        header("Location: check.php"); exit();

    }
    else
    {
    	echo "Вы ввели неправильный логин/пароль";
    }
}
?>
  • Вопрос задан
  • 144 просмотра
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
sslion
@sslion
Так ты логин и пароль не отправляешь, только submit
Ответ написан
Ваш ответ на вопрос

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

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