ini_set session maxlifetime不会过期

时间:2016-10-30 11:30:29

标签: php session

我在我的loginsite上使用此代码:

if(isset($_POST['submitted']))
{  
ini_set('session.gc_maxlifetime', 60);

session_set_cookie_params(60);
session_start();

   if($fgmembersite->Login())
   {
        $fgmembersite->RedirectToURL("loginhome.php");
   }
}

因此,我们的想法是,当用户登录并按下提交按钮时,maxlifetime将按特定时间倒计时(此处为测试目的60秒),然后删除登录后任何站点上的会话。我在loginhome.php上尝试过,60秒后我被踢了,不得不再次登录(所以它在这里工作得很好)。但如果我继续下去,在登录区域的其他页面上,它将不再起作用。我还试图将代码复制到每个页面,以便计时器对每个页面分开工作,这是行不通的。 有人能帮助我吗?

此致

1 个答案:

答案 0 :(得分:0)

即使您将其设置为60秒,也不会在每次请求时使其过期。每次请求页面时,PHP都会掷骰子,以确定该请求是否会使会话过期。如果您处于开发环境中,则可以使“骰子”只有一个数字。也就是说,如果你在php.ini中设置以下设置,它将在每个请求上过期并进行垃圾收集:

session.gc_probability  "1"  
session.gc_divisor  "1"