我在我的网站上做了一个简单的登录功能。我正在做的是,登录成功后,我使用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"; // } }) })})的PHPclass 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; } }}
2 回答
![?](http://img1.sycdn.imooc.com/545863cd0001b72a02200220-100-100.jpg)
狐的传说
TA贡献1804条经验 获得超3个赞
为了销毁会话的数据,您需要初始化/恢复会话,否则将无法获取会话。因此您需要致电session_start()。
因此,请尝试以下代码:
public function destroySession() {
session_start();
session_unset();
session_destroy();
}
- 2 回答
- 0 关注
- 139 浏览
添加回答
举报
0/150
提交
取消