2009-12-17 79 views
3

我剛剛發現我在使用我的一個頁面時遇到了IE問題。 我設置的cookie:同名的多個餅乾

setcookie('page', '12345', '2000000', '/'); 

如果我登錄我重置的cookie再次調用該函數。 在Firefox中一切正常工作原因舊的cookie被刪除,但在IE瀏覽器這兩個餅乾留在? 這是怎麼發生的?這不是非法的嗎?

現在我固定的搭配:

setcookie('page', '', time() - 3600, '/'); 
setcookie('page', '1234', '2000000', '/'); 

這是正確的解決辦法還是我失去了一些東西?

回答

4

According to the documentation,這是刪除cookie的正確方法。

+1

是的,但$ _COOKIE ['page'] ='1234'不會更改客戶端Cookie值,只會更改服務器值。 – dfilkovi 2009-12-17 23:15:08

1

只是一個預感,但它看起來對於時間戳的expires值是相當低的,所以cookie可能會立即過期(即在會話結束時)。也許這樣的事情讓IE瀏覽器容易混淆多個Cookie?

你應該使用time(),而不是設置有效期,例如:

setcookie('page', '12345', time() + 3600, '/'); 

順便說一句,你的解決方案似乎沒什麼問題。

0

我遇到了類似的問題。

我重新加載我的頁面多次,使用session_start()每次加載。 JavaScript設置我在PHP中使用的Cookie。當客戶端是Internet Explorer時,$ _ENV [「HTTP_COOKIE」]包含每個cookie的多個條目。 Firefox不會發生這種情況。

到目前爲止,在執行x.y.z域的代碼時,Internet Explorer會發送x.y.z的cookie,接着是y.z的cookie。 PHP然後將兩組cookie設置爲$ _ENV [「HTTP_COOKIE」]。

也許這可能被認爲是一個PHP的錯誤,也許不是。恕我直言,這是一個Internet Explorer錯誤。我在這裏發佈它,希望它可以幫助你解決你的問題。