【问题标题】:Extending cookie expiration dates in PHP在 PHP 中延长 cookie 过期日期
【发布时间】:2011-09-21 19:15:48
【问题描述】:

当我在 Google Chrome 中查看我网站的 cookie 时,我看到了 PHPSESSID__utma__utmb__utmc__utmz。我不明白这些 cookie 是什么意思,除了 PHPSESSID,我认为这是用户的登录会话。有些会在“当我关闭浏览器时”过期,而另一些会在未来某个日期过期。例如,有没有办法让它们在 2 年内到期?

我正在尝试使用户在关闭浏览器后保持登录状态。

【问题讨论】:

  • 不! 将会话生命周期延长数年。每个会话都与磁盘上的文件(或数据库中的记录)相关联,将这些会话文件保存多年是完全没有意义的。如果您有想要长期存储在用户浏览器中的数据,请在独立的 cookie 中进行,而不是会话。
  • @Charles:会话 cookie 的生命周期与会话文件的生命周期无关。这由 PHP 中的其他设置决定。
  • @Marc,但是当 cookie 后面的会话数据消失时,保留 cookie 是很愚蠢的。
  • 确实如此。无论如何,我将浏览器设置为在退出时清除所有 cookie,因此它们的生命周期不会对我产生丝毫影响。
  • 是的,但这是相反的方向。

标签: php cookies


【解决方案1】:

__utma, __utmb, __utmc, __utmz 是由 Google Analytics 设置的 cookie,而不是您网站的代码。

要扩展 PHPSESSID cookie,您的 PHP 会话 cookie,请修改 php.ini 中的设置:

; some long value in seconds (1 year)
session.gc_maxlifetime = 31536000
session.cookie_lifetime = 31536000

对于您自己在代码中通过setcookie() 设置的cookie(您的列表中没有列出),将第三个参数作为值传递(以秒为单位):

// Two year cookie (86400 secs per day for 2 years)
setcookie('name', 'cookievalue', time() + 86400 * 365 * 2);

【讨论】:

  • 好的,谢谢。所以为了清楚起见,我将在 php.ini 中放入的确切代码是什么,以使 PHP 会话持续 31,536,000 秒(1 年)?
  • session.gc_maxlifetime = 31536000 session.cookie_lifetime = 31536000
  • gc_maxlifetime 不会改变会话 cookie 持续时间。
  • @Michael:您需要在$expire 参数中添加当前时间戳。
【解决方案2】:

这些是来自 Google 分析的 cookie,用于跟踪您。你可以阅读更多关于它here

只有当会话或 cookie 到期时,用户才会从您的网站注销。如果过期时间为0,则在浏览器关闭时过期

【讨论】:

    【解决方案3】:

    您需要找到设置cookie的代码并添加适当的过期时间

    setcookie ("TestCookie", "", time() + 3600); //expires after 1 hour
    

    【讨论】:

      猜你喜欢
      • 2021-01-05
      • 1970-01-01
      • 1970-01-01
      • 2011-04-17
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多