为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用Javascript Ajax销毁PHP会话

如何使用Javascript Ajax销毁PHP会话

PHP
心有法竹 2021-05-05 09:30:11
我在我的网站上做了一个简单的登录功能。我正在做的是,登录成功后,我使用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 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

为了销毁会话的数据,您需要初始化/恢复会话,否则将无法获取会话。因此您需要致电session_start()。


因此,请尝试以下代码:


 public function destroySession() {

    session_start();

    session_unset();

    session_destroy();

  }


查看完整回答
反对 回复 2021-05-07
  • 2 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信