@freshlemon

Почему не живет $_SESSION?

Не могу понять почему у меня не живет $_SESSION
Проверял через isset($_SESSION), ответ false

session_start(); в начале документа index.php есть
в index.php вызывается js функция

function auth()
{
    let auth_login = document.getElementById('login_auth').value;
    let auth_pass = document.getElementById('pass_auth').value;
        $.ajax(
            {
                type: "POST",
                url:'auth.php',
                data: { auth_login: auth_login,
                        auth_pass: auth_pass},
                success: function(result)
                {
                    switch(result) {
                        case 'empty':  {
                            alert("Ошибка входа!\nЗаполните все поля!");
                            break;
                        }
                        case 'invalid':  {
                            alert("Ошибка входа!\nНеверный логин или пароль.");
                            break;
                        }
                        default: {
                            alert("Удачно!");
                            document.getElementById('authbtn').style.visibility = 'hidden';
                            document.getElementById('auth').style.visibility = 'hidden';
                            
                            document.getElementById("authDel").remove();
                            document.getElementById("regDel").remove();

                            var div = document.createElement("div");

                            div.innerHTML = '<div class="header-right" onClick="exitClick()"><h2 class="a-animated a-psevdo">Выход (' + result + ')</h2></div><div class="header-right" onClick="cartClick()"><h2 class="a-animated a-psevdo">Корзина</h2></div>';

                            document.getElementById("nav").appendChild(div);
                            break;
                        }
                    }
                }
            });
}

Вот так выглядит auth.php
<?
session_start();

if(empty($_POST['auth_login']) || empty($_POST['auth_pass'])) {
    echo "empty";
} else {
    $login = $_POST['auth_login'];
    $pass = $_POST['auth_pass'];

    $req = "";

    require_once 'funct.php';
    $users = getUsers();
    
    foreach ($users['users'] as $user) {
        if ($login == $user['login'] || $login == $user['mail']) {
            if(password_verify($pass, $user['password'])) {
                $_SESSION['user'] = $user;
                $req = $user['login'];
            }
        }
    }
    if ($req != "") {
        echo $req;
    } else {
        echo "invalid";
    }
}

?>


В общем сейчас ситуация такая, сделал присвоение конкретно логина пользователя $_SESSION['user'] = $user['login']; при исполнении ajax
на странице с index.php сразу после ajax он не видит $_SESSION
Потом я перезагружаю страницу один раз, var_dump($_SESSION); выдает это
array(1) {
["user"]=>
string(5) "lemon"
}

После еще одной перезагрузки он выдает это
array(0) {
}
  • Вопрос задан
  • 168 просмотров
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Если isset($_SESSION), отвечает false, это значит что перед обращением к этой переменной не была вызвана функция session_start();
Либо была вызвана, но не сработала из за самой известной ошибки. Ошибку гуглить

session_start(); в начале документа index.php есть

"Ты бы еще маму вспомнил" (с) анекдот

при чем тут index.php? в каком файле ты проверяешь сессию?
Ответ написан
Ваш ответ на вопрос

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

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