目前我正在转换我所有的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中的一个问题。