2011-03-25 61 views
1

爲什麼使用PHP代碼刪除瀏覽器中的cookie值,我正在使用FireFox「View Cookies addon」查看cookie值。它只會在刪除或手動清除我的瀏覽器cookie後纔會消失。我問這個問題是因爲我的工作只能在手動刪除瀏覽器中的cookie後才起作用,如果我在PHP代碼中未設置cookie並運行,它將無法工作,我將通過設置其過期值設置其過期日期來取消設置cookie值。示例:我使用解封餅乾Cookie--爲什麼使用PHP代碼刪除瀏覽器後的Cookie顯示

setcookie ('Event', '', time() - 3600, '/', '.example.com'); 

代碼:我使用設置cookie的

setcookie ("myCookie", "", time() - 3600, "/", ".example.com"); 

代碼

setcookie('Event', '-1-1301223453%7C9de8f7c08bf2be19c125f86ced33a0c2%7C1301050653%7C-1%7C1301223453', '', '/', '.example.com', 0); 

但是,如果我打印後的cookie值u它將是空白(沒有),但它會顯示在瀏覽器

請任何人幫忙!

+0

向我們展示了您用於取消設置Cookie以及設置它的代碼。 – 2011-03-25 10:58:46

+0

你檢查過你的系統時間嗎? – Gumbo 2011-03-25 10:58:53

+0

回覆!!我用於設置Cookie的代碼: setcookie('Event','',time() - 3600,'/','.example.com');我使用的伸出,收藏的cookie 代碼: 的setcookie( '事件', '-1-1301223453%7C9de8f7c08bf2be19c125f86ced33a0c2%7C1301050653%7C-1%7C1301223453', '', '/', '.example.com的',0) ; 但是,如果我打印後的cookie值未設置它將是空白的(沒有),但它會顯示在瀏覽器 – Saritha 2011-03-25 11:14:06

回答

0

關於嘗試這種方法是什麼?

// unset cookies 
if (isset($_SERVER['HTTP_COOKIE'])) { 
    $cookies = explode(';', $_SERVER['HTTP_COOKIE']); 
    foreach($cookies as $cookie) { 
     $parts = explode('=', $cookie); 
     $name = trim($parts[0]); 
     setcookie($name, '', time()-1000); 
     setcookie($name, '', time()-1000, '/'); 
    } 
} 
+0

爲什麼不使用'$ _COOKIE'? – Gumbo 2011-03-25 11:07:21

+0

根據php.net:如果cookie名稱是數組表示法,例如:user [username] 然後PHP會自動在$ _COOKIE中創建一個對應的數組。而是使用$ _SERVER ['HTTP_COOKIE'],因爲它鏡像了實際的HTTP請求標頭。 – 2011-03-25 11:08:37

2

這完全基於您正在查看的瀏覽器設置,並且您要求瀏覽器仍顯示cookie。這是真的瀏覽器仍然顯示cookie,但當你在PHP中檢查cookie未被設置時,你會放鬆。

print_r($_COOKIE); 

告訴你活動的cookie。

請記住,當您從瀏覽器工具清除cookie時,cookie將被刪除,但是當您從PHP中取消設置時,它們將被設置爲過去的時間,而不會從瀏覽器歷史記錄中刪除。

+0

感謝您的回覆!如果我在打印之後打印cookie值,它將變爲空白(無),但從瀏覽器中刪除後,我的工作將正常工作,您能否提出任何解決方案。 – Saritha 2011-03-25 11:16:36

0

這可能有各種原因。首先,檢查cookie是否被設置。然後確保它使用與cookie最初設置時相同的參數(除了過期)。而對於過期參數,使用值肯定是長期以往(一小時可能是太少了,如果你的服務器的時間是關閉的幾個小時):

setcookie($cookieName, 'deleted', 1, $cookiePath, $cookieDomain); 
0

這裏是有關刪除Cookie一個簡單的教程首先我們設置cookie值和過期日期。

setcookie('test', 'test', time() + 3600); 

訪問的頁面,你會看到cookie的「測試」已成功創建

然後,我們改變了PHP代碼刪除Cookie「測試」,只需設置一個傳遞日期值,它

setcookie('test', 'test', time() - 3600); 

訪問的頁面再次,你會發現該cookie「測試」已經

BTW:我是用火餅乾延伸檢查Cookie值。

希望這個簡單的教程可以幫助你。