PHP cookie时间格式不起作用

时间:2012-04-11 14:41:59

标签: php cookies

我有这两个饼干它们确实有效,但只有当饼干到期时间为5小时及以上时才会有效。如果我将cookie到期时间设置为0也会有效,但我需要一个cookie才能在2小时内到期。当我将cookie设置为在2小时内过期时,它可以在firefox中运行,但不能在Chrome或IE中使用。

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

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

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

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:7)

那么 - 你在美国中部或东部时区吗?很可能,您的时间戳被解释为UTC,因此仅在您越过偏移时才起作用。更安全地使用像phpdate的C或R格式:

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

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

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

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

答案 1 :(得分:0)

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