查看关于设置cookie的php文档,我看到我可以为cookie设置过期日期。您可以将cookie设置为在浏览器会话结束时过期,或者在将来的某个时间过期,但我不知道如何将cookie设置为永不过期。这可能吗?这是如何实现的?
当前回答
根据cookie规范,所有cookie都会过期,因此这不是PHP的限制。
使用一个遥远的未来日期。例如,设置一个十年过期的cookie:
setcookie(
"CookieName",
"CookieValue",
time() + (10 * 365 * 24 * 60 * 60)
);
注意,如果您在32位PHP中设置了超过2038的日期,则该数字将被换行,您将得到一个立即过期的cookie。
其他回答
我的特权阻止我对第一篇文章发表评论,所以它必须在这里。
从当前日期提前20年设置时,应该考虑到2038 unix错误,这是上面建议的正确答案。
你的cookie在2018年1月19日(20年后)可能会遇到2038问题,这取决于你最终运行的浏览器和或版本。
永远和永远是我避免使用的两个词,因为生活的不可预测性。
自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"));
你不能说一个永不结束的循环,cookie过期日期为当前日期+ 1所以它永远不会到达它应该过期的日期,因为它总是明天?有点夸张,但只是说说而已。
根据cookie规范,所有cookie都会过期,因此这不是PHP的限制。
使用一个遥远的未来日期。例如,设置一个十年过期的cookie:
setcookie(
"CookieName",
"CookieValue",
time() + (10 * 365 * 24 * 60 * 60)
);
注意,如果您在32位PHP中设置了超过2038的日期,则该数字将被换行,您将得到一个立即过期的cookie。
你可以设置一个远离日期的日期,cookie是这样创建的:
var Cookie_expiry = new Date();
Cookie_expiry.setDate(Cookie_expiry.getDate()+10e5);
// expiry date of cookie is set to be practically infinite (~ 4000 years)
setCookie('token', 'token_value', {expires: Cookie_expiry});
推荐文章
- 在PHP单元测试执行期间,如何在CLI中输出?
- 在PHP中使用heredoc的优势是什么?
- PHP中的echo, print和print_r有什么区别?
- HttpOnly cookie如何与AJAX请求一起工作?
- 如何将XML转换成PHP数组?
- 如何将对象转换为数组?
- 从IP地址获取位置
- 获取数组值的键名
- HTTPS和SSL3_GET_SERVER_CERTIFICATE:证书验证失败,CA is OK
- PHP -获取bool值,当为false时返回false
- 在foreach中通过引用传递
- 如何触发命令行PHP脚本的XDebug分析器?
- 如何找出如果你使用HTTPS没有$_SERVER['HTTPS']
- 更好的方法检查变量为null或空字符串?
- 当使用Composer的开发/生产开关时,如何正确部署?