智能地自动过期会话

时间:2014-01-27 16:44:46

标签: php session

我正在尝试在php中编写自动会话超时功能,目前,这就是我所拥有的

if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1200)) {
    // last request was more than 20 minutes ago
    // destroy session data in storage
}
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp

此技术取决于用户在收到页面过期通知之前加载页面,我需要检查页面加载。

我需要一个在用户加载页面的天气到期之前。这是因为当会话到期时会通知登录到站点的其他用户,并且数据会记录在数据库中以供进一步使用。

1 个答案:

答案 0 :(得分:1)

这是一个非常复杂的主题,但您可以管理实现会话处理程序接口和数据库处理程序。

  1. 在PHP配置中检查session.gc_maxlifetime和session.cookie_lifetime

    这是一篇关于会话设置的非常好的文章:How do I expire a PHP session after 30 minutes?

  2. 使用这些方法创建实现SessionHandlerInterface和session_set_save_handler()的数据库层。

    • SessionHandlerInterface :: close - 关闭会话
    • SessionHandlerInterface :: destroy - 销毁会话
    • SessionHandlerInterface :: gc - 清理旧会话
    • SessionHandlerInterface :: open - 初始化会话
    • SessionHandlerInterface :: read - 读取会话数据
    • SessionHandlerInterface :: write - 写入会话数据
  3. 教程: http://www.wikihow.com/Create-a-Secure-Session-Managment-System-in-PHP-and-MySQL

    最后,您可以随时查询数据库以获得离线和在线用户。