2011-05-20 75 views
2

我是在一个项目中,另一名开发人员编写的代码工作,而用户登录时的session_start()像往常一样,然后他cheking像初级讲座:PHP脚本退出过快

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

你正在研究什么样的服务器?

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

如果问题出在开发服务器上,请找出会话文件的存储位置,然后看看会发生什么。

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

在所有三种情况下:尝试将会话文件存储在不同的目录中。在代码中,您必须先设置会话目录session_save_path(),然后再拨打session_start()

+1

这是一个云计算机和许多其他的PHP项目托管在那里,那些工作正常 – mushfiq 2011-05-20 12:00:16

0

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

有可能是您的代码 $ a ['id'];

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