PHP cookie 时间格式不起作用


PHP cookie time format not working

我有这两个饼干,它们确实有效,但前提是饼干有效期为 5 小时及以上,没有任何东西。如果我将 cookie 到期设置为 0,它也可以工作,但我需要 cookie 在 2 小时内过期。当我将 cookie 设置为在 2 小时后过期时,它可以在火狐中工作,但在 Chrome 或 IE 中则不行。

我只看到浏览器 (Chrome) 在从现在起五个小时或更长时间后获得 cookie。 或者如果到期设置为 0。我做错了什么?

setcookie('expire', 'test', time() + 7200, "/");

我不知道为什么时间函数不起作用,所以我的 cookie 将在两小时后过期。

任何帮助将不胜感激。

那么,您在美国中部还是东部时区?您的时间戳很可能被解释为 UTC,因此仅在超出偏移量时才有效。使用像phpdate的C或R这样的格式更安全:

$date = new Datetime('+2 hours');
setcookie('expire', 'test', $date->format('C'), "/");

甚至更好的是,使用预定义的 cookie 日期格式:

setcookie('expire', 'test', $date->format(DateTime::COOKIE), "/");

这些包括字符串中的偏移量,以便浏览器无法将其搞砸。此外,在查看响应标头时,它可以更轻松地进行故障排除,因为它采用人类可读的格式。

如果您在服务器上执行此操作,请仔细检查开发服务器上的时间是否正确 - 我知道我遇到了这样的问题,并且不稳定的服务器时间最终成为罪魁祸首。