在php会话结束后节省时间

时间:2012-01-05 20:00:05

标签: php session cookies destroy

我编写了一个脚本(php),它利用会话使其在重新启动浏览器后结束,并编写了“注销”功能(使用销毁会话并从浏览器中删除cookie)。 / p>

这是我的问题:

当用户自愿注销时,我的脚本会保存时间。但我无法控制重新启动或关闭浏览器的情况。

我是否有任何方法可以用来处理这些案件?谢谢......

4 个答案:

答案 0 :(得分:4)

如果浏览器没有请求,服务器端(PHP)将不会注意到。

但是,如果更新数据库中的最后一个活动时间戳,则可以知道上次活动的时间。随着会话在一段时间后被销毁,该用户的最后一个活动将保留在数据库中,直到下次登录。

答案 1 :(得分:2)

您可以让用户页面以合理的间隔向服务器检查ajax。 (5分钟?)然后每隔5分钟在服务器上运行一个作业,检查那些没有签入的用户。您可以假设他们关闭窗口或失去连接的时间是在他们的最后一次检入和当前时间之间,然后销毁会话。

答案 2 :(得分:1)

我会将AJAX事件绑定到卸载Javascript事件。

$(window).unload(function() {
   $.ajax({
       url: 'someLogoutRequest.php'
   });
});

答案 3 :(得分:0)

PHP会话通常会在浏览器关闭时死亡(假设您没有混淆cookie和会话。)但是,您可以添加一个额外的会话,该会话在时间戳之后存储时间戳。无效,并清除会话。您通常会在用户导航时更新此时间戳,以便在导航中途不会超时。虽然我仍然没有百分之百清楚你想要做什么以及为什么。所以我的回答可能是需要的一个静音概念。 jjs9543有一个不那么糟糕的建议,但是如果在用户浏览器上禁用Javascript,那么这个建议会失败(我不能想象几年前常见,但不值得一说)。