如何在PHP中获得有关已关闭会话的通知

时间:2013-06-16 00:48:47

标签: php session notifications session-timeout

我保留了我网站的活跃用户列表。 当用户登录时,我将它们添加到列表中。

然后我定期(在计时器上)调用一个PHP脚本,每次在服务器上延迟PHP会话到期时间10分钟。

当用户注销时,我将其从活动用户列表中删除。 当计时器停止并且到期时间不再延迟时,PHP会话将在10分钟后到期。

到目前为止一切顺利。

当用户关闭浏览器而不注销时,他们的会话在10分钟后仍会过期,因为时间戳不再更新。

但此用户仍保留在我的有效用户列表中!!

如何删除此用户?

我保留此列表是为了防止用户同时从2台计算机进入,这是客户要求。

编辑: 我相信这可以作为银行网站,票务网站等以某种方式解决这个问题。

2 个答案:

答案 0 :(得分:0)

简单的答案是你不能。不管怎么说都不是PHP。如果您乐意强制使用javascript,您可以编写一个脚本,该脚本会定期从用户的浏览器“轮询”服务器,让它知道用户仍处于活动状态。您还可以减少为您设置的间隔PHP脚本可以更准确地更新内容。

答案 1 :(得分:0)

您可以尝试更频繁地更新“活动用户”列表,但在每次登录时清除用户的会话数据通常更有意义。因此,如果从另一台计算机进行第二次登录,则第一次登录将在下一次加载页面时终止。