关闭浏览器时如何从表中删除会话值

时间:2011-09-27 05:16:52

标签: php session

我是PHP的初学者。我遇到了与会话相关的问题,我创建了一个包含用户名,密码字段和一个带sessionID的temp_session表的表。 当我使用给定的用户名登录时会生成一个会话,会话将存储在temp_session表中,当我通过按下注销按钮注销时会从tem_session表中删除会话值。

现在,我有一个问题,当我关闭浏览器时我会做什么,在这种情况下会话过期但会话值仍然在temp_session表中我想在浏览器关闭后从temp_session 2分钟后删除该值。我将使用什么逻辑。

3 个答案:

答案 0 :(得分:0)

这是一个建议,而不是在两分钟后使sessionId无效,为什么不在用户重新登录应用程序时重置值。我不是PHP专家,但我猜你应该能够使用session_start处理程序。

如果您仍想继续执行此操作,那么您需要在users表中设置一个时间戳,该时间戳将在每次服务器收到请求时更新,然后您可能希望运行的计划更新您的表基于时间戳..你看到你引入的不必要的开销。

答案 1 :(得分:0)

关闭浏览器时无法清除数据库值,但需要实现逻辑解决方案。

您需要在会话表中添加时间戳作为上次活动时间,如果用户的上次活动时间和当前时差不超过2分钟,则设置上次活动=当前时间,否则从数据库中删除记录。

让我们讨论案例。

登录时,您将在DB中添加会话。 如果用户闲置超过2分钟,我们将从DB中删除会话。 如果用户ID没有空闲,则比上一次活动多2分钟将设置为当前时间。

答案 2 :(得分:0)

在java中,我们可以通过HTTPSessionListner处理它并在web.xml文件中添加一个条目。这将在会话未激活时调用,session.invalidate()方法可以在我们想要的操作之后调用post。

所以,您可以尝试在PHP中实现相同的功能或找到与之相关的内容:)