我正在将 Drupal 6 用于执行一些电子支付工作的程序。由于登录意味着浏览器可以访问用户的敏感财务信息,我想确保它会在非活动期后超时会话。
我尝试使用:
ini_set('session.cookie_lifetime', 600); //expire after 10 minutes of inactivity
但是,这会在 10 分钟后将用户注销,无论他们自登录后是否有任何活动。
是否有不同的设置可供使用或修改此设置以使会话在不活动后过期而不是具有硬性和快速的生命周期长度?
您需要实施自己的解决方案,仅通过更改设置没有可靠的方法。如果您需要更多信息,请查看此答案How do I expire a PHP session after 30 minutes?
取自该问题的最佳答案:
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);
这样它就永远不会自行过期,除非他们关闭浏览器。
Drupal 允许用户在注销之前保持登录状态。这对你来说可能看起来不合逻辑,但对于写大篇幅或愿意在暂停后继续写作的人来说很有意义:他们可能会感到失望,如果经过一整天的工作他们提交了他们的帖子并得到一个错误,因为他们的会话已过期。
也就是说,您可以查看自动注销模块,它似乎可以帮助您满足应用程序的要求。