关闭浏览器时注销


Log out on browser close

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

问题是 - 访客通常不会这样做。他们只是关闭网络浏览器。

但是,下一个人可以来,打开浏览器,然后直接进入第一人称的登录区域。

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

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

 'session.cookie_lifetime' 

变量设置为 0。

必须有一些解决方案。任何帮助将不胜感激。

PHP 无法(孤立地)知道客户端何时关闭,因为那是客户端事件,而不是服务器事件。但是,您可以使用客户端上的JS将AJAX返回到服务器,以使其知道会话已关闭,使用window.unload事件(链接)。

您可能还想查看此答案,它解释了会话清理中的潜在漏洞(不确定这是否仍然适用于更新的 PHP 版本)以及您可能还需要调整的session.gc_maxlifetime。