2012-04-11 54 views
3

我有這兩個餅乾,他們做的工作,但只有當餅乾到期爲5小時,並且,在什麼都沒有。如果我將cookie過期設置爲0,它也可以工作,但是我需要cookie來在2小時內過期。它在Firefox中工作,當我設置Cookie在2小時內過期,但不是在Chrome或IE中。PHP cookie的時間格式不工作

我只看到瀏覽器(Chrome)得到的cookie,如果到期是從五個小時內從現在或以上。或者如果失效時間設置爲0.我做錯了什麼?

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

我不爲什麼時間功能不工作,所以我的cookie將在兩個小時內過期。

任何幫助,將不勝感激。

+0

你在相同的時區的服務器? – Pete 2012-04-11 14:45:19

回答

7

所以 - 你在中央或美國東部時區?更可能的是,您的時間戳被解釋爲UTC,因此只有在您超過偏移量時才能正常工作。使用更安全像phpdate公司的C或R格式:

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

甚至更​​好,使用預定義的cookie的日期格式:

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

這些措施包括在字符串中的偏移量,從而使瀏覽器可以」把它擰緊。另外,查看響應頭時,它使查找更容易,因爲它的格式是人類可讀的。

+0

感謝Mryan阿吉......它的工作:) – user979331 2012-04-11 15:00:38

+0

不用擔心 - 之前,我想通了一個給我造成了很多痛苦。 – 2012-04-11 15:02:43

+0

是東部時區的格式('C')? – user979331 2012-04-11 15:23:24

0

如果你這樣做是在服務器上,仔細檢查了開發服務器上的時間是正確的 - 我知道我有一個問題,正是這樣和靠不住的服務器時間結束了是罪魁禍首。