没有脚本flash的表单注销


form logout without script flash

好吧,我不知道怎么在谷歌上说,所以我来了这里。

我有一个表单,其中包含一个注销脚本的提交按钮。当你点击它时,如果你观察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)

PHP中的

可以通过

$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,它将在应用程序的其余部分运行之前销毁会话。