查看关于设置cookie的php文档,我看到我可以为cookie设置过期日期。您可以将cookie设置为在浏览器会话结束时过期,或者在将来的某个时间过期,但我不知道如何将cookie设置为永不过期。这可能吗?这是如何实现的?
当前回答
当链接发布时,Chrome cookie最多可以存活400天。Chrome在这个回应的时候是一个大问题,所以我会让一个cookie的过期是在400天或更少。
如果你不想点击链接,它会总结说:
当cookie设置了显式的Expires/Max-Age属性时,该值将被限制在未来不超过400天。在此之前,没有任何限制,而且饼干在未来可能会过期数千年之久。
其他回答
我相信没有一种方法可以让饼干永远存在,但你只需要设置它在遥远的未来过期,比如2100年。
你不能这样做,但是如果你将过期时间设置为现在+ 100年呢?
最大值:2147483647
setcookie("CookieName", "CookieValue", 2147483647);
为了避免整数溢出,时间戳应该设置为:
2^31 - 1 = 2147483647 = 2038-01-19 04:14:07
设置较高的值可能会在旧浏览器中出现问题。
也可以查看RFC关于cookie的内容:
信息=值 可选的。Max-Age属性的值是delta-seconds, cookie的生存期,以秒为单位,非负十进制 整数。为了正确地处理缓存的cookie,客户端应该 根据年龄计算,计算cookie的年龄 HTTP/1.1规范[RFC2616]中的规则。当年龄是 大于delta-seconds seconds,客户端应该丢弃 饼干。值为0表示cookie应该被丢弃 立即。
和RFC 2616, 14.6年龄:
如果缓存接收到的值大于最大的正数 整数它可以表示,或者它的任何年龄计算 溢出时,它必须传输一个Age报头,其值为 2147483648(2 ^ 31)。
http://www.faqs.org/rfcs/rfc2616.html
虽然这是不可能的,但你可以做一些类似谷歌所做的事情,将你的cookie设置为2038年1月17日或同样遥远的时间。
实际上,你最好将你的cookie设置为10年或60*60*24*365*10年,这应该比你的cookie所使用的大多数机器的寿命都长。
永远和永远是我避免使用的两个词,因为生活的不可预测性。
自1970年1月1日以来,可以使用有符号32位整数存储的最新时间是2038年1月19日星期二的03:14:07(231-1 = 2,147,483,647秒,1970年1月1日之后)。这种限制被称为2038年问题
setCookie("name", "value", strtotime("2038-01-19 03:14:07"));
推荐文章
- Laravel中使用雄辩的ORM进行批量插入
- PHP 5.4调用时引用传递-容易修复可用吗?
- 格式化字节到千字节,兆字节,千兆字节
- 如何在PHP中获得变量名作为字符串?
- 令牌身份验证vs. cookie
- 如何为其他域设置cookie
- 用“+”(数组联合运算符)合并两个数组如何工作?
- JWT vs cookie用于基于令牌的身份验证
- Laravel PHP命令未找到
- 如何修复从源代码安装PHP时未发现xml2-config的错误?
- 在PHP中对动态变量名使用大括号
- 如何从对象数组中通过对象属性找到条目?
- 如何从关联数组中删除键及其值?
- PHP字符串中的花括号
- PHP -如何最好地确定当前调用是否来自CLI或web服务器?