我在我的网站上做了一个简单的登录功能。我正在做的是,登录成功后,我使用php建立了一个会话session_start(),然后定义了$_SESSION用于存储用户数据的变量。并且$_SESSION已经发送了该数据以响应进行登录的ajax调用。登录成功,但是当我尝试注销用户时,只要单击注销按钮,我就简单地发送ajax请求。并且在那里session_unset()和session_destroy()已被调用。瞬间我想破坏我在登录时作了发言,但它给我的错误:Trying to destroy uninitialized session; 我不知道可能是什么问题,我在这里关注了一些问题,但无法解决问题。
AJAX电话
$(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;
}
}
}
狐的传说