查看关于设置cookie的php文档,我看到我可以为cookie设置过期日期。您可以将cookie设置为在浏览器会话结束时过期,或者在将来的某个时间过期,但我不知道如何将cookie设置为永不过期。这可能吗?这是如何实现的?


当前回答

虽然这是不可能的,但你可以做一些类似谷歌所做的事情,将你的cookie设置为2038年1月17日或同样遥远的时间。

实际上,你最好将你的cookie设置为10年或60*60*24*365*10年,这应该比你的cookie所使用的大多数机器的寿命都长。

其他回答

你不应该这样做,这是不可能的,如果你愿意,你可以设置一个更大的值,比如10年以后。

顺便说一句,我从来没有见过有这样要求的饼干:)

你不能这样做,但是如果你将过期时间设置为现在+ 100年呢?

永远和永远是我避免使用的两个词,因为生活的不可预测性。

自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规范,所有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});