我需要设置使用PHP setcookie函数在1小时后过期的cookie。我服务器上的时区设置为GMT。我应该如何设置cookie到期日期,使其在不同客户端的浏览器时区工作?
答案 0 :(得分:9)
我可以告诉它近乎客户端的时间并不重要。 PHP根据unix时间码设置过期时间。该时间的任何变化都应该与服务器一起存在。
以下是来自PHP manual的setcookie()的摘录:
到期:
Cookie过期的时间。这是一个Unix时间戳,因此是自纪元以来的秒数。换句话说,你最有可能 使用time()函数加上之前的秒数设置它 你希望它过期。或者你可以使用mktime()。时间()+ 60 * 60 * 24 * 30 将cookie设置为在30天后过期。如果设置为0,或省略,则 cookie将在会话结束时(浏览器时)到期 关闭)。
答案 1 :(得分:5)
PHP的setcookie()函数接受与Unix时间戳值对应的整数。如果您的cookie应该有1小时的生存时间,那么您可以使用time()+ 3600来获取该值。然后,PHP将创建一个过期时间为“expires = Fri,2001年8月3日20:47:11 UTC”的cookie。它是UTC(GMT),因此您不必担心客户端浏览器的时区
答案 2 :(得分:0)
答案 3 :(得分:0)
假设你使用set cookie。
我可能错了,但我想:
您将expire参数作为Unix时间戳提供,并将时间戳计算为“以小时为单位”,因此您希望cookie在一小时后到期。所以不要关心时区,因为unix时间戳是明确的。
然后浏览器的任务是根据bowser设置(语言环境,语言等)在日期中翻译unix时间戳。