PHP: setcookie() 在 2038 年后过期

PHP: setcookie() to expire after the year 2038

目前我正在将我所有的 PHP unix 时间戳转换为在 2k38 issue.

之外工作

我注意到 setcookie() 过期日期 参数使用了 unix 时间戳。有没有办法用替代方法设置过期日期,也许以某种方式使用 DateTime class?

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

Note: You may notice the expire parameter takes on a Unix timestamp, as opposed to the date format Wdy, DD-Mon-YYYY HH:MM:SS GMT, this is because PHP does this conversion internally.

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

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

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

If the expiry-time is later than the last date the user agent can represent, the user agent MAY replace the expiry-time with the last representable date.

或者您可以直接使用 seecookie()。据我所知,它只会在 PHP.

的某些 32 位版本中成为问题