4

我有这两个 cookie,它们确实有效,但前提是 cookie 的有效期为 5 小时及以上,没有任何内容。如果我将 cookie 到期时间设置为 0,它也会起作用,但我需要 cookie 在 2 小时内到期。当我将 cookie 设置为 2 小时后过期时,它在 Firefox 中有效,但在 Chrome 或 IE 中无效。

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

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

我不知道为什么时间功能不起作用,所以我的 cookie 将在两个小时内过期。

任何帮助,将不胜感激。

4

2 回答 2

10

所以——你是在美国中部还是东部时区?您的时间戳很可能被解释为 UTC,因此仅在您超过偏移量时才有效。使用 phpdate 的 C 或 R 之类的格式更安全:

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

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

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

这些包括字符串中的偏移量,这样浏览器就不会搞砸了。此外,在查看响应标头时,它可以更轻松地进行故障排除,因为它是人类可读的格式。

于 2012-04-11T14:47:24.863 回答
0

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

于 2012-04-11T14:45:53.913 回答