【发布时间】:2015-07-14 07:21:09
【问题描述】:
我正在设置一个过期时间为
的 cookiemktime(24,0,0).
我的问题很简单。如果浏览器时区不同,cookie是按照服务器时区还是浏览器时区过期?
【问题讨论】:
我正在设置一个过期时间为
的 cookiemktime(24,0,0).
我的问题很简单。如果浏览器时区不同,cookie是按照服务器时区还是浏览器时区过期?
【问题讨论】:
Set-Cookie 标头将时区信息作为过期日期时间的一部分,因此用户代理知道它应该何时过期。
Set-Cookie: sessionToken=abc123; Expires=Wed, 09 Jun 2021 10:18:14 GMT
来自setcookie 的 php 文档
过期
...
注意:您可能会注意到 expire 参数采用 Unix 时间戳, 与日期格式 Wdy、DD-Mon-YYYY HH:MM:SS GMT 不同,这是 因为 PHP 在内部进行了这种转换。
【讨论】:
来自PHP manual,mktime函数:
返回与给定参数对应的 Unix 时间戳。这个 timestamp 是一个长整数包含秒数 Unix 纪元(1970 年 1 月 1 日 00:00:00 GMT)和指定的时间。
它包含一个秒数,一个时间量:不需要关心时区。
【讨论】:
mktime(24,0,0)
根据您正在运行的 timezone() 服务器计算机计算第二天 00:00:00 的 unix 时间戳,并返回整数时间戳。
现在,当你在
setcookie(Visit, date("F jS - g:i a"), mktime(24,0,0));
在浏览器上,它将“自纪元以来的时间戳”转换为本地时区并设置 cookie 的过期时间。
您应该知道我们在这里仍然根据服务器端时间范围控制 cookie 的生命周期。
【讨论】: