【问题标题】:Is it possible to set unlimited session timeout in php是否可以在php中设置无限会话超时
【发布时间】:2014-10-18 13:18:21
【问题描述】:

我的网站需要登录才能查看更多信息。我的问题是,当用户登录时,会话开始到已经在 php.ini 文件中定义的有限时间。我想在用户登录时限制这个会话时间。我已经使用了 ini_set() 函数,即:

ini_set("session.gc_maxlifetime",720000); 
ini_set('session.gc_probability',1); 
ini_set('session.gc_divisor',1); 

其中临时设置会话时间的 php_ini 值。但它不能工作。

我做错了什么吗?

请帮我解决这个问题

【问题讨论】:

  • 你可以存储在cookie中吗? setcookie(name,value,expire,path,domain,secure) 可能是更好的方法
  • "unlimited" 是不可能的,但60 * 60 * 24 * 365 (31536000) 将持续一年。这还不够吗? 720000 秒只有 8.3 days (720000 / 60 / 60 / 24)。
  • 看看这个问题,接受的答案会详细解释stackoverflow.com/questions/520237/…
  • 我认为你在滥用会话逻辑。会话都是关于某个时候到期的。不过,您可以将会话设置为 1 年,在我看来,这似乎是一个“无限”的时间。

标签: php


【解决方案1】:

在开始会话之前将 session.gc_probability 设置为 0。这将使垃圾收集器有 0% 的机会删除会话数据。 您必须在共享相同会话存储位置的所有应用程序中执行此操作。

【讨论】:

    【解决方案2】:

    您可以尝试这样做:

    <?php
    
     ini_set('session.gc_maxlifetime', 30*60);
     session_start();
    
     ?>
    

    第二个参数是秒数,在此之后数据将被视为“垃圾”并可能被清理。

    另请查看this 了解更多信息。

    当然,您可以根据需要调整数字。

    【讨论】:

      猜你喜欢
      • 2017-07-12
      • 2012-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-29
      • 2012-10-19
      • 2019-05-21
      相关资源
      最近更新 更多