有或没有活动的PHP会话超时


PHP session timeout with or without activity

我正在尝试将php会话设置为在没有浏览器活动的情况下过期。我试着阅读论坛,在这里的stackoverflow,但不能。如果我们有浏览器活动,会话仍然处于活动状态。

您需要手动处理。大致如下:

if(!$_SESSION['started']) {
    // This is a new session, let's keep track of when it was started
    $_SESSION['started'] = time();
} else if (time() - $_SESSION['started'] > $maxlifetime) {
   // We've hit our max lifetime, session should be destroyed
   session_destroy();
}

请注意,直到下一次页面加载时,用户才会意识到他们的会话已过期。如果您希望他们立即得到通知(或接近通知),即使他们只是坐在页面上,那么您需要使用某种ajax轮询来检查会话。

您可以使用cron作业终止非活动会话,或者尝试类似的操作:1.将时间戳存储在会话变量中。2.在页面加载时检查/更新变量。3.如果时间戳太旧,请从您的网站/应用程序。