我正在构建一个Web应用程序,允许用户登录到数据库后端并更新一些记录。我不是一个专业的PHP开发人员。PHP,会话和退出浏览器
我刚刚注意到,打开Chrome浏览器后,浏览到最后一页,它是在几天前(重新启动之间),这是网站的网页之一,你只能登录后访问。我认为这很奇怪,因为会议应该过期了。
在每个页面的顶部,我有:
session_start();
如果到后端的用户登录成功我这样设置会话变量:
$_SESSION['userAuthenticated'] = TRUE;
如果用户点击注销按钮它这样做:
$_SESSION = array();
session_unset();
session_destroy();
在我的php.ini文件中我有以下设置:
session.cookie_lifetime 0 (0 for both local value and master value)
session.gc_maxlifetime 900 (900 for both local value and master value)
这是我的理解,会话将保持活动15分钟,并在用户完全退出浏览器时被销毁。我刚刚测试过,我可以完全退出浏览器,再次打开它并访问其中一个应该需要登录的页面。
难道我做错了这里 - 我不能总是指望用户点击退出按钮,但我希望在会议上没有任何工作15分钟后,或者如果他们放弃他们的浏览器完全。
更新:这是我如何检查,如果用户已通过身份验证:
if (!isset($_SESSION['userAuthenticated']) and $_SESSION['userAuthenticated'] !== TRUE) {
header('Location: index.php');
die;
}
'$ _SESSION = array();'不是必需的。此外,请显示您如何检查'$ _SESSION ['userAuthenticated']'以验证用户是否登录。 – Raptor
您可能正在从缓存中加载页面。如果刷新,它是否仍显示为已登录? (!isset($ _ SESSION ['userAuthenticated'])和$ _SESSION ['userAuthenticated']!== TRUE){ – Mike
@Raptor - 我正在使用它来验证用户是否已验证: header :index.php'); 死亡; } – user982124