【问题标题】:Expire php session variable after period of time一段时间后过期php会话变量
【发布时间】:2016-11-11 05:45:57
【问题描述】:

有没有办法将 php 会话变量 ($_SESSION['example') 设置为在给定时间后过期。澄清一下,我想保持用户会话的完整性,并保持所有其他变量的值,我只想设置一个会话变量在短时间内(1 分钟左右)后过期。有没有办法将变量设置为自行过期,或者当我确定时间已过期时,我是否必须跟踪时间并删除变量?我在 ubuntu 上使用 php 5 和 apache2。谢谢。

【问题讨论】:

  • 不是重复的。我特别要求让会话与所有其他会话变量一起保持活动状态,同时只删除一个变量。
  • 您可以使用 cookie 来实现这一点...不确定这是否是您想要的方向
  • 也许考虑使用某种内存缓存(如 Redis)作为实现过期效果的手段。
  • 您可以在会话中存储到期日期,如果到期日期已过,则清除变量。这里有一个代码示例:stackoverflow.com/questions/520237/…
  • 其实只需要在使用的时候判断是否过期即可。因此,请保留“最后访问”时间。当它被访问时,检查last access time。如果它太旧,请删除它。即不返回任何内容。

标签: php apache session


【解决方案1】:

也许做一些类似的事情:

$_SESSION['example'] = $value;
$_SESSION['expiries']["example"] = time() + 30*60; // 30 mins

声明函数:

function expireSessionKeys() {
     foreach ($_SESSION["expiries"] as $key => $value) {
          if (time() > $value) { 
             unset($_SESSION[$key]);
          }
     }
}

那么无论你有session_start(),都可以使用exprireSessionKeys() 跟进

所有这些都可以在自定义session handler 中构建

【讨论】:

  • 谢谢。当需要在刷新的页面上显示消息时非常有用。
猜你喜欢
  • 2013-07-15
  • 2015-09-16
  • 1970-01-01
  • 1970-01-01
  • 2019-08-15
  • 2023-03-21
  • 2020-12-08
  • 1970-01-01
  • 2011-04-16
相关资源
最近更新 更多