【问题标题】:PHP - Setting Cookie Expire + TimePHP - 设置 Cookie 过期 + 时间
【发布时间】:2011-12-17 10:06:03
【问题描述】:

我的计算机上没有设置 cookie。它在本地工作,但不在现场。我只希望 cookie 存在 20 分钟。我能想到它不起作用的唯一原因是因为服务器在美国。我提前 x 小时。因此cookie设置时间已经过期。这是正确的吗?

setcookie($cookiename, $cookie, time() + 1200);

如果服务器时间是早上 6 点,而我的时间是下午 12 点。 cookie 会设置为在上午 6:20 或下午 12:20 过期吗?

如果是前者,如何根据用户本地时间设置cookie过期时间?如果是后者,我会在星期一再解决一些问题。

【问题讨论】:

  • 这很容易调试:echo time();

标签: php cookies


【解决方案1】:

过去我也遇到过类似的问题,我一直得到的建议是确保 cookie(如果设置在不同的时区)至少有 25 小时的有效期。这使得任何地方的任何人都可以使用 cookie。在很多情况下,无效的 cookie = 无法访问 = 很重要。

现代计算对此有所保留,同步时间将确保cookie始终设置为用户本地时间。也就是说,仍有待发现例外情况。

20 分钟是启用 cookie 的非常短的时间,请考虑增加它。如果 cookie 仍未在本地设置,我会假设您的浏览器已阻止来自服务器的传入 cookie。

【讨论】:

    【解决方案2】:

    time() 函数会获取服务器时间,但我相信 Cookies 使用的是 GMT 时间。

    从 PHP 获取 GM 时间的最简单方法是使用:

    <?php
      $gmtime = gmdate('U');
    ?>
    

    所以你应该这样设置 cookie:

    setcookie($cookiename, $cookie, gmdate('U') + 1200);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-06
      相关资源
      最近更新 更多