Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.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_Session_Session Cookies - Fatal编程技术网

Php 在浏览器关闭时注销

Php 在浏览器关闭时注销,php,session,session-cookies,Php,Session,Session Cookies,我有一个带有登录名的PHP站点。一旦此人登录(使用标准的基于文件的会话),此人可以单击注销页面将其注销 问题是——访客通常不会这么做。他们只需关闭web浏览器 但是,下一个人可以出现,打开浏览器,然后正好进入第一个人的登录区域 这似乎是一个巨大的安全漏洞:)在共享用户环境中(办公室、网吧等) 我需要知道如何通过关闭窗口“注销”此人。我知道 'session.cookie_lifetime' 变量设置为0 必须有一些解决办法。任何帮助都将不胜感激。PHP无法(单独地)知道客户端何时关闭,因为

我有一个带有登录名的PHP站点。一旦此人登录(使用标准的基于文件的会话),此人可以单击注销页面将其注销

问题是——访客通常不会这么做。他们只需关闭web浏览器

但是,下一个人可以出现,打开浏览器,然后正好进入第一个人的登录区域

这似乎是一个巨大的安全漏洞:)在共享用户环境中(办公室、网吧等)

我需要知道如何通过关闭窗口“注销”此人。我知道

 'session.cookie_lifetime' 
变量设置为0

必须有一些解决办法。任何帮助都将不胜感激。

PHP无法(单独地)知道客户端何时关闭,因为这是一个客户端事件,而不是服务器事件。但是,您可以在客户端上使用JS将AJAX返回到服务器,让它知道会话已关闭,使用
窗口。unload
事件()


您可能还想了解会话清理中可能存在漏洞的原因(不确定这是否仍然适用于较新的PHP版本)以及session.gc_maxlife,您可能还需要对其进行调整

我发现它在IE8和Safari上运行良好。只有在Chrome和Firefox上才不起作用。这些浏览器在浏览器关闭后以某种方式重用会话cookie。我甚至关闭了“启动时从我离开的地方继续”。所以这不是PHP的问题。