Answer the question
In order to leave comments, you need to log in
How to process php script through ajax?
There is a php script that checks the login and password in the database, you need to execute it without reloading the page
. Is this real?
The problem is that ajax does not work correctly (most likely I'm doing something wrong)
It doesn't matter if I enter the login and password into the fields or not, it always shows that I entered them incorrectly
Without ajax`a, the script worked correctly, there was a redirect to website home page
Login.php file
<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>
$("#sub").on('click', function() {
$.post("login_ajax.php", { submit: "submit"})
.done(function( data ) {
alert( "Сообщение: " + data );
});
});
<?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 "Вы ввели неправильный логин/пароль";
}
}
?>
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question