Есть 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 "Вы ввели неправильный логин/пароль";
}
}
?>