A
A
alexei_20022021-06-02 07:52:11
AJAX
alexei_2002, 2021-06-02 07:52:11

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>

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

login_ajax.php file
<?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

1 answer(s)
S
Sergey, 2021-06-02
@sslion

So you don't send login and password, only submit

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question