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 位版本中成为问题
目前我正在将我所有的 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.