3

当用户单击“注销”时,我希望销毁会话,我试图通过使用 jQuery 调用 onClick 函数来执行此操作,然后调用包含 .PHP 文件的 .PHP 文件session_destroy();

索引.php

<?php  
if(isset($_SESSION['username'])) {
  echo "<li><a href='#' id='logOut' onclick='logOut();'>Log Out</a></li>";
}
?>

这使得注销按钮仅在用户登录时和 onClick 应该调用时可见,该按钮logOut()包含在 Nav.js 中。

导航.js

function logOut() {
  $.get("../Controller/logOut.php");
  return false;
}

logOut.php

<?php
  session_destroy();
?>

当我单击“注销”时,似乎什么都没有发生,并且我在 Chrome 开发控制台中没有收到任何错误。问题是什么?

4

2 回答 2

5

您必须在调用之前开始会话session_destroy()

<?php
  session_start();
  session_destroy();
  header("Location: login.php");   //redirect your page to login page
?>
于 2013-03-19T17:35:58.087 回答
1

您正在使用 AJAX 请求。要直接注销,直接调用logOut.php文件即可。

function logOut() {
  window.location = "../Controller/logOut.php";
  return false;
}

或者最简单的方法:

<?php  
if(isset($_SESSION['username'])) {
  echo "<li><a href='../Controller/logOut.php' id='logOut'>Log Out</a></li>";
}
?>

logOut.php销毁会话后,您可能需要向文件添加重定向。

于 2013-03-19T17:34:29.443 回答