【问题标题】:PHP session timeout with or without activity [closed]PHP会话超时有或没有活动[关闭]
【发布时间】:2013-11-21 15:46:01
【问题描述】:

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

【问题讨论】:

  • 您基本上需要一个 cron 作业或计划任务来完成此任务。您还可以使用 javascript setTimeout() 发送 AJAX 请求以终止会话。
  • 即使用户正在积极使用网页,您是否希望引导他们?

标签: php


【解决方案1】:

您需要手动处理。大致是这样的:

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 轮询来检查会话。

【讨论】:

  • 我认为这就是@Frank 想要的。如果他想要用户通知,请使用第一条评论或this answer
  • @Frank 这对您的问题有帮助吗?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    • 2013-08-01
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多