【问题标题】:php scripts logout too quicklyphp脚本注销太快
【发布时间】:2011-08-29 11:52:51
【问题描述】:

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

提前致谢。

【问题讨论】:

    标签: php session-timeout session-cookies


    【解决方案1】:

    您在使用哪种服务器?

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

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

    也有可能存储会话的目录不可写。在这种情况下,会话变量一开始就不会被存储。

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

    【讨论】:

    • 那是一台云机器,许多其他的 php 项目都托管在那里,这些都运行良好
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-02-14
      • 1970-01-01
      • 2017-05-22
      • 2013-05-11
      • 1970-01-01
      • 1970-01-01
      • 2013-12-28
      • 1970-01-01
      • 2011-04-14
      相关资源
      最近更新 更多