PHP:setcookie()将在2038年后过期


PHP: setcookie() to expire after the year 2038

目前我正在转换我所有的PHP unix时间戳,以解决2k38问题。

我注意到setcookie()expire-date参数使用unix时间戳。有没有一种方法可以用其他方法设置过期日期,也许可以用DateTime类?

来自PHP文档关于过期日期:

注意:您可能会注意到expire参数采用Unix时间戳,与日期格式Wdy,DD Mon YYYY HH:MM:SS GMT相反,这是因为PHP在内部进行转换。

您不能更改函数签名。好吧,至少不用摆弄奇怪的PHP扩展。但是,由于cookie规范根本不使用Unix时间戳,您可以简单地编写自己的函数并手动调用header()

Set-Cookie: lang=en-US; Expires=Wed, 09 Jun 2099 10:18:14 GMT
Set-Cookie: lang=en-US; Max-Age=8640000

并希望浏览器能够处理日期:

如果过期时间晚于上次日期,则用户代理可以表示,用户代理可以将到期时间替换为可代表日期。

或者,您也可以简单地使用seecookie()。据我所知,这只是一些32位版本的PHP中的一个问题。