【问题标题】:discrepancy in cookie expiration datecookie过期日期的差异
【发布时间】:2025-12-27 03:25:07
【问题描述】:

我正在创建一个永远不会过期的 cookie,所以我将过期日期设置为 2038-01-01:

setcookie($keyword, $value, mktime(0, 0, 0, 1, 1, 2038));

我希望将到期日期/时间设置为

2038 年 1 月 1 日 00:00:00

但是当我在 Firefox 的 cookie 中查看时,我看到了

2038 年 1 月 1 日 08:00:12

这种差异从何而来?

【问题讨论】:

  • 您的服务器设置为哪个时区?
  • @MarkBaker:可能是这样,谢谢。我的服务器时间是 EST,我在欧洲。不过,如果我指定“00:00:00”,它是否不应该将时间设置为“00:00:00”,无论我在哪个时区?

标签: php cookies


【解决方案1】:

mktime 在服务器的时区运行。当您检查 Firefox 的 cookie 时,它​​会以您当地的时区显示它们。如果它们不同,您会看到这样的差异。

秒字段中的:12 可能是由于服务器使用了Max-Age cookie 参数而不是精确的ExpiresMax-Age 是浏览器从收到 cookie 开始计算出来的,所以在 setcookie() 调用和浏览器收到响应之间显然有 12 秒的时间。

【讨论】: