我有这两个饼干它们确实有效但只有当饼干到期时间为5小时及以上时才会有效.如果我将cookie到期时间设置为0也会有效,但我需要一个cookie才能在2小时内到期.当我将cookie设置为在2小时内过期时,它可以在Firefox中运行,但不能在Chrome或IE中使用.
我只看到浏览器(Chrome)获得cookie,如果到期时间是从现在起的五个小时或更长时间.或者如果到期时间设置为0.我做错了什么?
setcookie('expire', 'test', time() + 7200, "/");
Run Code Online (Sandbox Code Playgroud)
我不知道为什么时间功能不起作用所以我的cookie将在两个小时后到期.
任何帮助,将不胜感激.
那么 - 你在美国中部或东部时区吗?很可能,您的时间戳被解释为UTC,因此仅在您越过偏移时才起作用.更安全地使用像phpdate的C或R这样的格式:
$date = new Datetime('+2 hours');
setcookie('expire', 'test', $date->format('C'), "/");
Run Code Online (Sandbox Code Playgroud)
甚至更好,使用预定义的cookie日期格式:
setcookie('expire', 'test', $date->format(DateTime::COOKIE), "/");
Run Code Online (Sandbox Code Playgroud)
这些包括字符串中的偏移量,因此浏览器无法将其搞砸.此外,它在查看响应标头时更容易进行故障排除,因为它采用人类可读的格式.