将 Cookie 设置为永不过期
查看有关设置cookie的php文档,我发现我可以为cookie设置到期日期。您可以将 Cookie 设置为在浏览器会话结束时或将来的某个时间过期,但我没有看到将 Cookie 设置为永不过期的方法。这有可能吗?这是如何实现的?
查看有关设置cookie的php文档,我发现我可以为cookie设置到期日期。您可以将 Cookie 设置为在浏览器会话结束时或将来的某个时间过期,但我没有看到将 Cookie 设置为永不过期的方法。这有可能吗?这是如何实现的?
根据 Cookie 规范,所有 Cookie 都会过期,因此这不是 PHP 限制。
使用遥远的未来日期。例如,设置一个在十年后过期的 Cookie:
setcookie(
"CookieName",
"CookieValue",
time() + (10 * 365 * 24 * 60 * 60)
);
请注意,如果您在32位PHP中设置的日期超过2038年,则该数字将环绕,您将获得一个立即过期的cookie。
最大值:2147483647
setcookie("CookieName", "CookieValue", 2147483647);
为避免整数溢出,时间戳应设置为:
2^31 - 1 = 2147483647 = 2038-01-19 04:14:07
设置较高的值可能会导致较旧的浏览器出现问题。
另请参阅有关 Cookie 的 RFC:
Max-Age=value OPTIONAL. The value of the Max-Age attribute is delta-seconds, the lifetime of the cookie in seconds, a decimal non-negative integer. To handle cached cookies correctly, a client SHOULD calculate the age of the cookie according to the age calculation rules in the HTTP/1.1 specification [RFC2616]. When the age is greater than delta-seconds seconds, the client SHOULD discard the cookie. A value of zero means the cookie SHOULD be discarded immediately.
如果缓存收到的值大于它可以表示的最大正整数,或者如果其任何期限计算溢出,则必须传输值为 2147483648 (2^31) 的 Age 标头。