查看关于设置cookie的php文档,我看到我可以为cookie设置过期日期。您可以将cookie设置为在浏览器会话结束时过期,或者在将来的某个时间过期,但我不知道如何将cookie设置为永不过期。这可能吗?这是如何实现的?
当前回答
你不能说一个永不结束的循环,cookie过期日期为当前日期+ 1所以它永远不会到达它应该过期的日期,因为它总是明天?有点夸张,但只是说说而已。
其他回答
你不应该这样做,这是不可能的,如果你愿意,你可以设置一个更大的值,比如10年以后。
顺便说一句,我从来没有见过有这样要求的饼干:)
永远和永远是我避免使用的两个词,因为生活的不可预测性。
自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"));
当链接发布时,Chrome cookie最多可以存活400天。Chrome在这个回应的时候是一个大问题,所以我会让一个cookie的过期是在400天或更少。
如果你不想点击链接,它会总结说:
当cookie设置了显式的Expires/Max-Age属性时,该值将被限制在未来不超过400天。在此之前,没有任何限制,而且饼干在未来可能会过期数千年之久。
根据cookie规范,所有cookie都会过期,因此这不是PHP的限制。
使用一个遥远的未来日期。例如,设置一个十年过期的cookie:
setcookie(
"CookieName",
"CookieValue",
time() + (10 * 365 * 24 * 60 * 60)
);
注意,如果您在32位PHP中设置了超过2038的日期,则该数字将被换行,您将得到一个立即过期的cookie。
如果你想在客户端机器上永久保存数据——或者至少直到浏览器缓存完全清空,使用Javascript本地存储:
https://developer.mozilla.org/en-US/docs/DOM/Storage#localStorage
不要使用会话存储,因为它会像最大年龄为0的cookie一样被清除。
推荐文章
- PHP子字符串提取。获取第一个'/'之前的字符串或整个字符串
- __construct函数的作用是什么?
- PHP中的异步shell执行器
- 如何唯一地识别访问我网站的计算机?
- Laravel 5 -如何访问在视图存储上传的图像?
- 为什么在PHP中使用sprintf函数?
- “质量分配”在Laravel中是什么意思?
- 在逗号上爆炸字符串,并修剪每个值的潜在空格
- 正确的方式删除cookies服务器端
- PHP与MySQL 8.0+错误:服务器请求身份验证方法未知的客户端
- laravel5“LIKE”对等物(雄辩的)
- 在函数中使用默认实参
- 转换php数组到Javascript
- PHP PDO:字符集,集名称?
- PHP函数生成slug (URL字符串)