2014-10-05 93 views
0

我遇到了IE瀏覽器的一個問題,我真的不明白,正如你猜測的那樣,IE是它的最後一個版本。即使使用php代碼,Internet Explorer也不會取消cookie的設置

情況很簡單。我設置了一個cookie,顯示它,然後取消設置,然後顯示「no cookie」。

有三個簡單的頁面:

setcookie.php

<?php 
    setcookie('test','test value 2', (time()+60*60*24*30), '/', '.mydomain.com'); 
?> 

unsetcookie.php

<?php 
    unset($_COOKIE['test']); 
    setcookie('test','unset value', (time() - 3600), '/', '.mydomain.com'); 
?> 

test.php的

<?php 
if(isset($_COOKIE['test'])){ 
    $test = 'cookie value ==> '.$_COOKIE['test']; 
}else{ 
    $test = 'no $$$$$$ cookie'; 
} 

echo $test; 
?> 

所以簡單的程序是:

1 /開放setcookie.php

2 /開放test.php的(所有的瀏覽器上顯示 「cookie值==>測試值2」)

3 /開放unsetcookie.php

4 /開放test.php的再次

然後鉻,野生動物園等...顯示 「沒有$$$$$餅乾」 BUT IE瀏覽器顯示的「cookie VA lue ===>取消設置值「

而且我希望他能像其他人一樣顯示......我試圖將null設置爲值,我試圖將時間設置爲0,-1。我嘗試設置cookie等後未設置...不會改變任何東西...

所以我現在有點絕望,我非常沮喪,Cookie代碼是服務器端,所以怎麼可能IE錯誤讀這個東西?

我知道我可以管理檢查Cookie值來檢查它是否是未設置的,但是這不是我該怎麼做我的代碼,這將意味着很多愚蠢的變化......

感謝您的幫助!

回答

0

從技術上講,刪除未使用的cookie留給瀏覽器處理。通常情況下,當cookie過期時,或者有空值,它會被瀏覽器自動刪除,而不是服務器。話雖這麼說,而不是:

setcookie('test','unset value', (time() - 3600), '/', '.mydomain.com'); 

你應該有這樣的:

setcookie('test',null , (time() - 36000), '/', '.mydomain.com'); 

將其上的cookie的到期時間是顯著更誇張,和值爲null。誠實地說,由於服務器不會決定要保留哪些cookie,以及要刪除哪些cookie(而是建議瀏覽器應該刪除cookie),因此應該進行值檢查,而不是檢查cookie是否已設置。當您想要移除cookie時,請將其值設置爲您可以輕鬆識別的值。這裏有一個例子:

註銷:

//I want to remove the cookie 
setcookie('test','idontwantthisanymore',(time() - 3600), '/', '.mydomain.com); 

頁面來測試登錄狀態:

if(!isset($_COOKIE['test']||($_COOKIE['test']=="idontwantthisanymore")) { 
echo 'no cookie'; 
} else { 
echo 'cookie'; 
} 
相關問題