php脚本注销太快了

时间:2011-05-20 08:45:39

标签: php session-timeout session-cookies

我在另一个开发人员编写代码的项目中工作,而用户像往常一样登录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()用于注销问题。

提前致谢。

2 个答案:

答案 0 :(得分:2)

你在做什么样的服务器?

在运行多个使用共享会话目录的站点的共享服务器上,session.gc_maxlifetime实际上是访问该共享目录的所有站点的最短生命周期。

如果问题出在开发服务器上,请找出会话文件的存储位置并查看它们发生的情况。

存储会话的目录也可能不可写。在这种情况下,会话变量永远不会存储在第一位。

在所有三种情况下:尝试将会话文件存储在不同的目录中。在代码中,您必须在调用session_save_path()之前使用session_start()设置会话目录。

答案 1 :(得分:0)

当用户空闲活动一段时间时发生超时。除非使用session_destroy,否则无法自动注销。

您的代码可能有可能 $ A [ 'ID'];

偶然返回null。 此外,您需要检查哪个页面已被注销。 提供完整的代码可能很容易识别问题。