Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.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 我想在mozilla、IE 8.0或Chrome的标签关闭时注销_Php_Javascript_Html - Fatal编程技术网

Php 我想在mozilla、IE 8.0或Chrome的标签关闭时注销

Php 我想在mozilla、IE 8.0或Chrome的标签关闭时注销,php,javascript,html,Php,Javascript,Html,嗨 如果我关闭选项卡,可能会终止会话(注销)。请让我知道你们是否实施了这个 谢谢, Manish使用Javascript onUnload事件调用/ping您的PHP注销页面: $(window).unload(function() { // Send an Ajax request to logout.php }); 但是,Carlos Camderrós是对的:您可能不知道用户是否打开了多个选项卡,因此即使用户关闭了其中一个选项卡,您也有可能将其注销。来自jQuery文档(.unloa

如果我关闭选项卡,可能会终止会话(注销)。请让我知道你们是否实施了这个

谢谢,
Manish

使用Javascript onUnload事件调用/ping您的PHP注销页面:

$(window).unload(function() {
  // Send an Ajax request to logout.php
});
但是,Carlos Camderrós是对的:您可能不知道用户是否打开了多个选项卡,因此即使用户关闭了其中一个选项卡,您也有可能将其注销。

来自jQuery文档(.unload()是相关浏览器功能的包装):

卸载事件的具体处理方式因浏览器版本而异。例如,某些版本的Firefox在跟随链接时触发事件,但在关闭窗口时不会触发。在实际使用中,应该在所有受支持的浏览器上测试行为,并与专有的beforeunload事件进行对比


换言之,为了使会话可靠,您还需要以另一种方式进行:给会话一个非常短的超时时间,并在每个会话中重复ping服务器以使其保持活动状态。

创建会话,但不要将其与cookie一起存储。在他们关闭该选项卡或窗口后,他们将释放该会话。

这意味着您必须在每次请求时将会话id从服务器发送到客户端(反之亦然)。或者有不同的解决方案吗?不,那是解决方案。它可能并不漂亮,但它很有效,我倾向于认为Occam的Razor apply就是在这种情况下,最简单的解决方案就是最好的解决方案。你无法控制用户打开了多少选项卡。因此,即使您实现了自己的愿望,也有可能用户打开了两个选项卡,当关闭其中一个选项卡时,您在另一个选项卡上注销了该用户。也在中。