Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 不使用脚本闪存的表单注销_Php_Web - Fatal编程技术网

Php 不使用脚本闪存的表单注销

Php 不使用脚本闪存的表单注销,php,web,Php,Web,好吧,我不知道怎么在谷歌上说,所以我来了 我有一个表单,其中包含一个用于注销脚本的提交按钮。当您单击它时,如果您观看url栏,您可以看到表单将带您到哪里,直到更改对会话变量生效后my javascript重定向启动。我不知道facebook和其他人是如何做到这一点的,而不改变页面并在注销完成时重定向您。他们向注销脚本发送ajax调用 如果您使用jQuery,例如: jQuery.ajax({ "url":"http://www.myurl.com/logout.php", "data

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


我有一个表单,其中包含一个用于注销脚本的提交按钮。当您单击它时,如果您观看url栏,您可以看到表单将带您到哪里,直到更改对会话变量生效后my 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请求并响应返回(google xmlheaderrequest)

您还可以在其余应用程序运行之前销毁会话

由于PHP是无状态的,它以前不知道存在会话,因此应用程序继续运行,假设用户是“来宾”

主页示例:

<?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!";
?>

这是有道理的,从没想过。感谢您的快速回复。添加的示例使用jQuery javascript库,因为与纯javascript相比,进行ajax调用更容易,不过我建议您学习进行ajax调用的纯javascript方法,以积累您在这方面的知识。