好吧,我不知道怎么在谷歌上说,所以我来了这里。
我有一个表单,其中包含一个注销脚本的提交按钮。当你点击它时,如果你观察url栏,你可以看到表单带你去哪里,直到我的javascript重定向在会话变量发生变化后生效。我不明白的是facebook和其他网站是如何做到这一点的,而不改变页面,并在注销完成时重定向你。
它们向注销脚本发送一个ajax调用
如果你使用jQuery,像这样:
jQuery.ajax({
"url":"http://www.myurl.com/logout.php",
"dataType":"json",
"success":function(response){
if(response.loggedout) {
window.location ="http://www.myurl.com/someotherpage.php"
}
}
});
,其中PHP被用作后端,所有的注销脚本需要做的就是注销用户,并返回类似
的内容。 {"loggedout":true}
如果用户注销(如果不是,则为false而不是true)
可以通过
$response = array("loggedout"=>true);
echo json_encode($response);
如果你不使用jQuery(像纯javascript),你将不得不建立一个XHR请求和响应返回(谷歌xmlheaderrequest)
您还可以在应用程序的其余部分运行之前销毁会话。
由于PHP是无状态的,它不会事先知道会话的存在,所以应用程序继续运行,假设用户是"guest"。
主页示例:
<?php
session_start();
if(!empty($_GET['logout'])) session_destroy();
if(!empty($_SESSION['name'])) echo "Hello, {$_SESSION['name']}!";
else echo "You are not logged in, please login!";
?>
所以你可以访问/index.php?Logout =true,它将在应用程序的其余部分运行之前销毁会话。