我在另一个开发人员编写代码的项目中工作,而用户像往常一样登录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()用于注销问题。
提前致谢。
答案 0 :(得分:2)
你在做什么样的服务器?
在运行多个使用共享会话目录的站点的共享服务器上,session.gc_maxlifetime实际上是访问该共享目录的所有站点的最短生命周期。
如果问题出在开发服务器上,请找出会话文件的存储位置并查看它们发生的情况。
存储会话的目录也可能不可写。在这种情况下,会话变量永远不会存储在第一位。
在所有三种情况下:尝试将会话文件存储在不同的目录中。在代码中,您必须在调用session_save_path()
之前使用session_start()
设置会话目录。
答案 1 :(得分:0)
当用户空闲活动一段时间时发生超时。除非使用session_destroy,否则无法自动注销。
您的代码可能有可能 $ A [ 'ID'];
偶然返回null。 此外,您需要检查哪个页面已被注销。 提供完整的代码可能很容易识别问题。