我目前处理 PHP Web 应用程序的超时,如下所示:
- 当前,每个页面在 PHP 中都有一个超时检查,它检查当前时间与用户最后一次加载页面的情况。如果两者之差超过 15 分钟,则销毁用户会话,创建新会话,将当前页面位置放到会话上,并将用户重定向到登录页面。
- 每个页面头都有一个
<meta>
标签,在 15 分 5 秒后刷新页面(因此“调用”超时检查)
我现在正在考虑为用户添加更大的控制权,例如,如果他们碰巧在页面上工作了很长时间,并且正在考虑允许在超时前大约两分钟出现弹出窗口。然后弹出窗口将具有继续会话(进行 AJAX 调用以刷新会话中的最后一个活动)或注销的选项。如果弹出窗口被忽略(例如,如果用户在不同的页面上),则用户将被注销。
根据Using Javascript to override or disable meta refresh tag,我将无法重置<meta>
标签,这可能意味着我必须删除标签。PHP/Javascript Session Timeout with warning的唯一答案建议使用 JavaScript 调用重定向到登录页面,但是这可以通过禁用 JavaScript 来规避。
我正在考虑<meta>
用(允许,因为我使用 HTML5)包围重定向标签<noscript>
,这样即使用户不使用 JavaScript,它们仍然会超时。这也将删除<meta>
触发用户是否决定继续他们的会话的标签。
这种方法有意义吗?我错过了什么吗?还有另一种更有意义的方法吗?
我当前的代码
<?php
require_once("include/session.php");
require_once("include/sessioncheck.php");
?>
<html>
<head>
<meta http-equiv="refresh" content="<?= TIMEOUT_MIN * 60 ?>" />
<!-- additional tags -->
</head>
<body>
<!-- content -->
</body>
</html>