Я делаю простой вход в систему на моем сайте.Что я делаю, так это то, что при успешном входе в систему я делаю сеанс в php, используя session_start()
, а затем определяю $_SESSION
переменные, в которых я храню пользовательские данные.И эти $_SESSION
данные были отправлены в ответ на вызов ajax для входа в систему.Вход выполнен успешно, но когда я пытаюсь выйти из системы, я просто отправляю ajax-запрос, когда нажимается кнопка выхода из системы.И там были названы session_unset()
и session_destroy()
.Мгновенно я хочу уничтожить сеанс, который я сделал при входе в систему, но выдает ошибку: Trying to destroy uninitialized session
;Я не знаю, в чем может быть проблема, я следил за некоторым вопросом здесь, но не смог решить проблему.
AJAX Call
$(document).on("click", "#logout", function(e) {
fetch("Models/auth.php", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
"model": "auth",
"action": "logout",
"data": null
})
}).then(function(t) {
t.text().then(function(res) {
console.log(res);
// if(r.success){
// location.href = "register.html";
// }
})
})
})
PHP
class Globals {
public
function makeSession($email, $id, $auth_key, $online, $session) {
if (!isset($_SESSION)) {
session_start();
$_SESSION["user_email"] = $email;
$_SESSION["user_id"] = $id;
$_SESSION["user_key"] = $auth_key;
$_SESSION["user_online"] = $online;
$_SESSION["user_session"] = $session;
}
}
public
function destroySession() {
session_unset();
session_destroy();
}
}
if (isset($data)) {
$conn = new Database;
$db_conn = $conn - > connect();
switch ($data - > model) {
case "auth":
{
$auth = new Auth(json_decode($data - > data), $data - > action);
switch ($data - > action) {
case "register":
{
$auth - > registerUser($db_conn);
break;
}
case "login":
{
$auth - > loginUser($db_conn);
break;
}
case "logout":
{
$g = new Globals();
//Call to destroy The Sessions
$g - > destroySession();
echo json_encode(array("success" => true, "action" => "logout"));
break;
}
}
break;
}
}
}