php会话在几分钟后随机过期
我有一个多年来一直正常工作的登录页面/系统,让用户登录,直到他/她关闭浏览器窗口或手动注销。但是最近(从昨天开始)在仅仅几分钟的不活动之后,会话cookie似乎过期,导致用户自动注销 这种情况发生在不同的浏览器和不同的操作系统上,PHP版本是5.6.29,最近有所更改(在5.5甚至5.3之前) 我使用php会话在几分钟后随机过期,php,session,session-cookies,Php,Session,Session Cookies,我有一个多年来一直正常工作的登录页面/系统,让用户登录,直到他/她关闭浏览器窗口或手动注销。但是最近(从昨天开始)在仅仅几分钟的不活动之后,会话cookie似乎过期,导致用户自动注销 这种情况发生在不同的浏览器和不同的操作系统上,PHP版本是5.6.29,最近有所更改(在5.5甚至5.3之前) 我使用session\u start()在每个页面上创建并刷新会话。登录脚本首先检查用户名和PW,并从数据库中获取一些其他用户数据。这些其他数据首先保存在变量中,然后写入会话变量,如 $_SESSION[
session\u start()
在每个页面上创建并刷新会话。登录脚本首先检查用户名和PW,并从数据库中获取一些其他用户数据。这些其他数据首先保存在变量中,然后写入会话变量,如
$_SESSION['username'] = $name;
$_SESSION['usertype'] = $type;
成功登录状态保存如下:
$_SESSION['login'] = "ok";
session_start();
if(($_SESSION['login'] != "ok") OR ($_SESSION['usertype'] != "xxx")) {
header("Location: ../login.php"); /* redirects to login page if conditions are not true */
exit;
}
在其他页面上,我检查登录状态,如下所示:
$_SESSION['login'] = "ok";
session_start();
if(($_SESSION['login'] != "ok") OR ($_SESSION['usertype'] != "xxx")) {
header("Location: ../login.php"); /* redirects to login page if conditions are not true */
exit;
}
登录正常,登录的用户可以继续进入其他页面,只要用户连续不断地或多或少地这样做,但是如果有人在继续之前等待几分钟(即没有任何活动),他/她将注销(即在尝试打开另一页面时重定向到登录页面)
更糟糕的是,有一半的时间它就像预期的那样工作,也就是半小时后
任何帮助都将不胜感激
更新: 添加
ini_集('session.gc_maxlifetime',3600')代码>和'ini_set'(session.cookie_life',3600);没有帮助。我又把它拿走了
之后,我查看了错误日志,发现:
ap_pass_旅失败,错误103:软件导致的连接
流产
(问题是,我无法访问服务器设置-这是在共享的Web空间上…您可以通过phpinfo()查看php配置(php.ini)
对于任何感兴趣的人:会话实际上并没有过期,但会话变量消失了(并再次随机出现)
我在这里发布的后续问题中对此进行了讨论:
您必须已将会话.name
从默认的PHPSESSID
更改为其他内容。保留其默认值session.name=PHPSESSID
。一切都会好起来的
这是一个PHP错误。如果您安装了新的PHP,请检查PHP.ini
文件。默认会话超时可能是默认值,旧系统可能会将其延长到更长的时间。请参见以下答案:您应该使用php.ini中的默认会话值。另外,请尝试清除浏览器cookies,并检查网站的错误日志文件中是否存在错误。您还可以检查存储会话数据的文件夹是否具有正确的权限
<?php
ini_set('session.gc_maxlifetime', 3600);