2011-10-28 76 views
0

當我print_r($_COOKIE);,我得到以下結果。如何刪除cookies?

Array ([filters] => Array ([input1] => 1 [input2] => 20000 [input3] => none) [PHPSESSID] => 12334) 

我想刪除一些元素,並希望它是這樣的:

Array ([filters] => Array ([input3] => none) [PHPSESSID] => 12334) 

我試着在$_COOKIE

$past = time() - 3600; 
setcookie("filters[input1]", "", $past, '/'); 
setcookie("filters[input2]", "", $past, '/'); 

這一點,但它不影響任何東西這裏有什麼問題?嘗試這一整天都是如此?

感謝

+3

確保頭被髮送之前的setcookie運行。 – Derek

+0

@Derek:頭?如何檢查和解決這個問題。請給我一個例子。 – Student

+0

另外,確保'$ path'和'$ domain'參數匹配用於設置它們的'$ path'和'$ domain' – DaveRandom

回答

1

嘗試:

unset($_COOKIE['filters']['input1']); 
unset($_COOKIE['filters']['input2']); 
$time = time() + 1000; // enything you want, if its in the past $_COOKIE['filters'] will no loger exist 
setcookie('filters', $_COOKIE['filters'], $time, '/'); 
+0

此解決方案正在爲我工​​作... – Student

+0

但是,當我刷新頁面時,Cookie又回來了。 – Student

+0

嗯..你確定,代碼是不是重新設置值? – 19greg96

2

你確定你叫setcookie()刪除與像你一樣創建的cookie相同的參數(路徑,安全等)的餅乾嗎?

另外,setcookie()不會影響運行腳本中的$_COOKIE。只有對該腳本的後續調用纔會有修改後的$_COOKIE數組。要刪除同一會話中的$_COOKIE的值,請致電unset($_COOKIE['name'])

1

您必須在運行setcookie()之後重新加載頁面 - 在重新加載頁面之前,設置Cookie的結果不可用。也可以嘗試使用'老'時間 - 比1小時更早 - 嘗試過去一年。如果時間不夠遠,某些瀏覽器不會刪除cookie

0

如果您使用域創建了Cookie,則可能需要使用相同的域名刪除。 即

設置cookie:

setcookie('mycookie', 'value', time() + 999, '/', '.my.domain', false); 

刪除Cookie:

setcookie('mycookie', "", -1, '/', '.my.domain', false);