检测过期的会话

时间:2011-10-31 21:22:59

标签: php session

所以我限制了我的应用程序中的会话TTL。在不活动时间之后,用户在向需要登录用户的页面发出请求时,如果没有自动重定向到登录页面,则用户将无法再执行任何操作。

但这真的不是用户友好的。用户只需转发到登录页面,无需事先通知或解释原因。

我想通过登录页面上的消息通知我的用户,他们的请求由于不活动而已经结束,并且他们需要再次登录。那么解决这个问题的合适方法是什么?

1 个答案:

答案 0 :(得分:1)

PHP自动清除过期的会话是“在您的代码实际运行之前”启动的一部分,基于.ini文件中指定的probability settings/intervals。这会自动运行并超出您的权限范围。如果您需要控制(或跟踪)过期的会话,那么您必须禁用PHP垃圾收集器并自行滚动。它将负责定期扫描会话存储介质(文件,数据库,ouija板等等)以查看过期会话并将其删除。

更好的选择是简单地拥有长期存在的会话文件,并以某种方式记录会话中的最后访问时间。要么“自从你上次做了以后已经过了XXX分钟,请确认你是你”或“自登录以来已经过了XXX分钟”等等......

这使您不必滚动自己的会话到期处理程序,仍然让用户“登录”,只需要验证其状态。