【问题标题】:What is timezone of cookie stored on client's side?存储在客户端的 cookie 的时区是什么?
【发布时间】:2012-04-19 12:58:26
【问题描述】:

我需要使用 PHP setcookie 函数设置 1 小时后过期的 cookie。我服务器上的时区设置为 GMT。我应该如何设置 cookie 的过期日期,以使其在不同客户端的浏览器时区工作?

【问题讨论】:

标签: php cookies timezone


【解决方案1】:

PHP 的 setcookie() 函数接受一个对应于 Unix 时间戳值的整数。如果您的 cookie 应该有 1 小时的生存时间,您可以使用 time() + 3600 作为该值。然后 PHP 将创建一个带有过期时间的 cookie,例如“expires=Fri, 3 Aug 2001 20:47:11 UTC”。它采用 UTC (GMT),因此您不必担心客户端浏览器的时区

【讨论】:

    【解决方案2】:

    据我所知,客户时间多长并不重要。 PHP 根据 unix 时间码设置过期时间。该时间的任何变化都应与服务器有关。

    以下是 setcookie() 的 PHP manual 的摘录:

    过期:

    cookie 过期的时间。这是一个 Unix 时间戳,因此是自纪元以来的秒数。换句话说,你很可能 使用 time() 函数加上之前的秒数来设置它 你想让它过期。或者你可以使用 mktime()。时间()+60*60*24*30 将 cookie 设置为在 30 天内过期。如果设置为 0 或省略,则 cookie 将在会话结束时过期(当浏览器 关闭)。

    【讨论】:

      【解决方案3】:

      您可以尝试使用 getTimeZonesetTimeZone 看看here

      strtotime 似乎也可以检索正确的日期时间格式,然后您可以使用gmdate 进行转换

      【讨论】:

        【解决方案4】:

        假设你使用了 set cookie。

        我可能错了,但我认为:

        您将 expire 参数作为 Unix 时间戳提供,并将时间戳计算为“一小时内”,因此您希望 cookie 在一小时内过期。所以不要关心时区,因为 unix 时间戳是明确的。

        然后浏览器的任务是根据 bowser 设置(区域设置、语言等)翻译日期中的 unix 时间戳

        【讨论】:

          猜你喜欢
          • 2011-10-18
          • 2018-07-20
          • 2022-11-30
          • 1970-01-01
          • 2010-09-15
          • 1970-01-01
          • 2021-07-15
          • 2015-09-01
          • 1970-01-01
          相关资源
          最近更新 更多