我在一个项目中工作,另一个开发人员编写了代码,而用户像往常一样登录session_start(),然后他像下面这样检查:
if($a['userName'] == $username && $a['password'] == $pwd)
{
$_SESSION['id'] = $a['id']; ?> <script language="javascript"type="text/javascript">window.location="host.php";</script> } else {
$msg= "Invalid Username Password";
}
当用户想在几秒钟后使用该表单时,其注销和用户无法提交数据。
我尝试增加会话生命周期:
$sessionCookieExpireTime=8*60*60;
session_set_cookie_params($sessionCookieExpireTime);
并且还尝试在运行时增加会话寿命,如下所示:
ini_set('session.gc_maxlifetime', '3600');
最后尝试通过增加php.ini会话寿命。不幸的是,这些都没有奏效。
我应该提到的一件事是,注销问题没有session_destroy()。
提前谢谢。
你在使用哪种类型的服务器?
在运行多个使用共享会话目录的站点的共享服务器上,session.gc_maxlifetime实际上是访问该共享目录的所有站点中生存期最短的。
如果问题出在开发服务器上,请找出会话文件的存储位置,并查看它们会发生什么情况。
存储会话的目录也可能不可写。在这种情况下,会话变量永远不会首先存储。
在所有三种情况下:尝试将会话文件存储在不同的目录中。在代码中,您必须使用 session_save_path()
设置会话目录,然后才能调用 session_start()
。
当用户空闲活动一段时间时,将发生超时。除非使用 session_destroy否则无法自动注销。
您的代码可能$a['id'];
偶然返回 null。此外,您需要签出哪个页面正在注销。提供完整的代码可能很容易识别问题。