Jquery 运行PHP onClick-session\u destroy
我希望在用户单击“注销”时销毁会话,我尝试使用jQuery调用函数onClick,然后调用一个.PHP文件,其中包含,Jquery 运行PHP onClick-session\u destroy,jquery,html,php,Jquery,Html,Php,我希望在用户单击“注销”时销毁会话,我尝试使用jQuery调用函数onClick,然后调用一个.PHP文件,其中包含,session\u destroy() index.php <?php if(isset($_SESSION['username'])) { echo "<li><a href='#' id='logOut' onclick='logOut();'>Log Out</a></li>"; } ?> logOut.
session\u destroy()代码>
index.php
<?php
if(isset($_SESSION['username'])) {
echo "<li><a href='#' id='logOut' onclick='logOut();'>Log Out</a></li>";
}
?>
logOut.php
<?php
session_destroy();
?>
当我单击“注销”时,似乎什么都没有发生,我在Chrome开发控制台中也没有收到任何错误。问题是什么?您正在使用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
文件。在调用session\u destroy()之前,必须先启动会话。
用ajax破坏会话不会让页面神奇地重新加载?您是否查看了“开发人员工具”下的“网络”选项卡,以查看$.get调用是否实际启动?如果刷新页面,您是否仍有会话?@Sann-无论这是否是最好的方式,您都不应该说“…我听说过的最愚蠢的事情之一”给寻求帮助的人。第一行是:“为了完全终止会话,就像注销用户一样,会话id也必须取消设置。如果使用cookie传播会话id(默认行为),则必须删除会话cookie。我猜他根本不想重新加载页面,所以window.location可能不是最好的选择。
<?php
if(isset($_SESSION['username'])) {
echo "<li><a href='../Controller/logOut.php' id='logOut'>Log Out</a></li>";
}
?>
<?php
session_start();
session_destroy();
header("Location: login.php"); //redirect your page to login page
?>