@some_idk

Задача куки перед редиктером ajax?

Сделал логин на ajax и перед тем как передаю результат что все успешно задаю куки, но после того как ajax получает успешный результат и происходит редирект куки не задаются. Как править в этом случае?

login.php
<?php 
    include($_SERVER['DOCUMENT_ROOT'] . "/includes/db_connect.php");
    include($_SERVER['DOCUMENT_ROOT'] . "/includes/functions.php");

    $nickname = mysqli_real_escape_string($link, $_POST['nickname']);
    $pass = mysqli_real_escape_string($link, $_POST['pass']);

    $sql = mysqli_query($link, "SELECT id, nickname, password FROM users WHERE nickname = '$nickname'");
    $records = mysqli_fetch_row($sql);

    if(!empty($records)) {
        if(password_verify($pass, $records[2])) {
            check_session("$nickname");
            echo "success";
        } else {
            echo "Вы ввели неверный пароль от аккаунта";
        }
    } else {
        echo "Аккаунта с указанным вами именем пользователя не найдено";
    }
?>


login.js
const form = document.querySelector(".login form"),
continueBtn = form.querySelector(".button input"),
errorText = form.querySelector(".error");

form.onsubmit = (e)=>{
    e.preventDefault();
}

continueBtn.onclick = ()=>{
    let xhr = new XMLHttpRequest();
    xhr.open("POST", "ajax/login.php", true);
    xhr.onload = ()=>{
        if(xhr.readyState === XMLHttpRequest.DONE){
            if(xhr.status === 200){
                let data = xhr.response;
                if(data === "success"){
                    location.href = "index.php";
                } else {
                    errorText.style.display = "block";
                    errorText.textContent = data;
                }
            }
        }
    }
    let formData = new FormData(form);
    xhr.send(formData);
}


start_usession()
function start_usession($nickname) {
        include($_SERVER['DOCUMENT_ROOT'] . "/includes/db_connect.php");
        $agent = $_SERVER['HTTP_USER_AGENT'];
        $ip = $_SERVER['REMOTE_ADDR'];
        $data = date("d.m.Y H:i");
        $permitted_chars = '0123456789abcdefghijklmnopqrstuvwxyz';
        $session_id = substr(str_shuffle($permitted_chars), 0, 10);

        $sql = mysqli_query($link, "SELECT id FROM users WHERE nickname = '$nickname'");
        $user_id = mysqli_fetch_row($sql);

        $sql = mysqli_query($link, "SELECT session_id FROM sessions WHERE session_id = '$session_id'");
        $check = mysqli_fetch_row($sql);

        if(empty($check[0])) {
            $sql = "INSERT INTO sessions(session_id, user_id, time_start, time_last, ip, browser, admin) VALUES ('$session_id', '$user_id[0]', '$data', '$data', '$ip', '$agent', '0')";
            setcookie("session_id", $session_id);
        } else {
            start_usession($nickname);
        }
    }
  • Вопрос задан
  • 103 просмотра
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

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

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