如何使用Javascript Ajax销毁PHP会话

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

      }

  }


}


心有法竹
浏览 147回答 2
2回答

狐的传说

为了销毁会话的数据,您需要初始化/恢复会话,否则将无法获取会话。因此您需要致电session_start()。因此,请尝试以下代码: public function destroySession() {    session_start();    session_unset();    session_destroy();  }
打开App,查看更多内容
随时随地看视频慕课网APP