如何检测会话何时即将结束。 PHP

时间:2012-02-10 23:16:32

标签: php session web

我不知道这是否可行。我正在寻找的是事件(如果有的话)启动以结束会话。在会议结束之前,我想以某种方式抓住它并执行我自己的行动。原因是我需要一个会话变量集,一旦会话到期我就会丢失。

我觉得如果可能的话,这可能是实现目标的一种糟糕方式。现在是星期五晚上7点,仍然在办公室。想象一下我试图寻找解决方案的兴奋。

谢谢大家。

5 个答案:

答案 0 :(得分:2)

例如,如果您创建自己的会话保存处理程序以使用数据库,则可以使用回收来进行垃圾回收,以便在删除数据之前获取相应的数据。

请参阅session_set_save_handler,尤其是gc回调。

答案 1 :(得分:1)

如果您具有数据库访问权限,则可以将会话信息存储在会话表中,并从该特定用户注册的上一个会话中检索该变量。

我知道,没有可靠的方法在会话终止之前触发事件,保证可以正常工作。重新构建数据的处理方式符合您的最佳利益,而不是提出一个脆弱的黑客攻击。

答案 2 :(得分:0)

您可以将数据保存在Cookie中并控制到期日期:

setcookie("TestCookie", $value, time()+3600);  /* expire in 1 hour */

http://php.net/manual/en/function.setcookie.php

这样您就不需要更改常规会话功能并允许它们正常到期。

答案 3 :(得分:0)

您可以使用Javascript进行排序。让服务器提供一个JS函数,该函数将在会话即将到期之前休眠。

然而,这并非万无一失:当用户离开您的页面时,坚固的cookie,他们不再运行您的JS了。当然,你也无法联系到告诉他们会议到期时你说的话......

在真正删除数据之前,您还可以让会话“过期”,并拥有一个自定义处理程序来警告用户并为他们提供宽限期。第二次销毁处理程序触发时,实际上删除了数据。

答案 4 :(得分:0)

从技术上讲,不可能判断PHP存储的会话(服务器端cookie中的会话)何时被终止。在PHP设置中,您可以说cookie必须存活多久,但它可以持续超过设定的时间。

如果您需要跟踪它的持续时间,您应该手动构建会话管理系统而不是使用PHP。