会话超时 - PHP 脚本注销太快


session timeout - php scripts logout too quickly

我在一个项目中工作,另一个开发人员编写了代码,而用户像往常一样登录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。此外,您需要签出哪个页面正在注销。提供完整的代码可能很容易识别问题。