我正在使用Drupal 6来执行一些电子支付工作的程序。 由于登录意味着浏览器可以访问用户的敏感财务信息,因此我想确保它将在非活动期后使会话超时。
我尝试使用:
ini_set('session.cookie_lifetime', 600); //expire after 10 minutes of inactivity
但是,这会在 10 分钟后将用户注销,无论他们自登录以来是否有任何活动。
是否有其他设置可供使用或修改此设置以使会话在不活动后过期,而不是具有硬性且快速的生存期?
Drupal允许用户保持登录状态,直到他们注销。这对你来说似乎不合逻辑,但对于写大帖子或愿意在暂停后恢复写作的人来说,这很有意义:如果经过一整天的工作,他们提交帖子并收到错误,因为他们的会话已过期。
也就是说,您可以查看自动注销模块,该模块似乎可以帮助您满足应用程序的要求。
您需要实现自己的解决方案 没有可靠的方法可以通过更改设置来实现。如果您需要更多信息,请查看此答案如何在 30 分钟后使 PHP 会话过期?
取自该问题的最高答案:
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
// last request was more than 30 minutes ago
session_unset(); // unset $_SESSION variable for the run-time
session_destroy(); // destroy session data in storage
}
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp
此外,您还需要设置:
ini_set('session.cookie_lifetime', 0);
这样它就不会自行过期,除非他们关闭浏览器。