Php 如果用户在浏览器上单击“关闭”,则从mysql表中删除用户会话

Php 如果用户在浏览器上单击“关闭”,则从mysql表中删除用户会话,php,mysql,session,Php,Mysql,Session,我为登录的用户设置了一个下降,并在表中添加了一个会话时间()和一些其他内容 我遇到的问题是,当用户关闭浏览器时,它会从mysql表中删除会话 从用户的角度来看,这很好,因为他们打开浏览器时必须再次登录 但是对于超级用户仪表板,如果用户关闭浏览器,它仍然显示用户已登录 我确实看过close browser alert javascript代码,但我宁愿找到一种不用它的方法 然后我想可能是一个cron脚本,但如果用户每次单击另一个页面时我都不更新time(),那么它可能会注销用户。这是唯一的方法吗?

我为登录的用户设置了一个下降,并在表中添加了一个会话时间()和一些其他内容

我遇到的问题是,当用户关闭浏览器时,它会从mysql表中删除会话

从用户的角度来看,这很好,因为他们打开浏览器时必须再次登录

但是对于超级用户仪表板,如果用户关闭浏览器,它仍然显示用户已登录

我确实看过close browser alert javascript代码,但我宁愿找到一种不用它的方法


然后我想可能是一个cron脚本,但如果用户每次单击另一个页面时我都不更新time(),那么它可能会注销用户。这是唯一的方法吗?

您的数据库不能有“isLoggedIn”列。它可以有一个“lastActivityTime”列吗。如果currentTime-lastActivityTime我不相信浏览器告诉您它正在关闭,则用户已注销

唯一的方法是在服务器上执行

每次验证会话时,尝试记录会话的当前时间-这将是会话的最后访问时间


然后,您可以删除超过您决定的某个时间段的所有会话。您可以通过cron作业来实现这一点,也可以将其添加到会话验证代码中,每个用户都可以帮助保持表的整洁。

感谢您的回答,它与@AW101的回答类似,但他们提到了cron,以及我在代码中如何处理它的另一种选择。我给你一个,但我给他们打勾。谢谢你们两位。:)干杯,我想我会去找克朗的。它只允许我将它添加到我正在运行的其他cron脚本中,这样我就可以在一个地方保存所有这些内部事务。