销毁ajax,如何使用Javascript Ajax销毁PHP会话

博主在网站上实现了登录和注销功能,使用PHP的session_start()创建用户会话,并在登录成功后存储用户数据。然而,在尝试注销用户时,通过AJAX调用session_unset()和session_destroy()出现错误:'Trying to destroy uninitialized session'。问题可能在于注销过程中session未正确初始化。AJAX调用触发注销并返回响应,但PHP代码中session的销毁步骤存在疑点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我在我的网站上做了一个简单的登录功能。我正在做的是,登录成功后,我使用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;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值