PHP在会话被破坏时执行某些操作

时间:2012-03-06 22:12:03

标签: php cookies session-cookies sessionid

我想知道我是否可以确定某人的会话是否已经结束,以及我是否可以做某些事情。

例如,如果会话已结束,则将播放器状态设置为离线。

2 个答案:

答案 0 :(得分:1)

如果用户未向服务器发出请求,则除非使用数据库系统,否则无法可靠地知道会话何时结束。例如,您有一个会话表:

session_id | user_id | session_start_time

每当您加载页面时,您会查看session_start_time是否足够大以便删除。例如:

if (($data['session_start_time'] + USER_SESSION_TTL) < time()) {
    // delete row
}

USER_SESSION_TTL是用户会话处于非活动状态时保持活动状态的时间。

现在,如果用户没有与他关联的会话,您可以放心地假设他处于离线状态。我概括了一下,但它可以应用于许多系统。

希望这有帮助

答案 1 :(得分:0)

但是,没有内置的机制,如果你实现自己的会话处理程序,你可以做一些事情。

请参阅http://nl2.php.net/manual/en/function.session-set-save-handler.php了解一些想法。