2011-10-28 17 views
0

私がprint_r($_COOKIE);になると、私は以下の結果を得ます。クッキーを削除するには?

私はいくつかの要素を削除すると、それはこのようになりたい
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

私はページをリフレッシュすると、クッキーが戻ってきます。 – Student

+0

うーん..確かに、コードは値を再設定していませんか? – 19greg96

2

はあなたがあなたがクッキーを作成するために行ったように(安全なパス、など)を同じ引数でクッキーを削除するsetcookie()を呼び出していることを確認していますか?

また、setcookie()は、実行中のスクリプトで$_COOKIEに影響しません。そのスクリプトへのその後の呼び出しでのみ、変更された$_COOKIE配列が呼び出されます。同じセッションで$_COOKIEの値を削除するには、unset($_COOKIE['name'])に電話してください。

1

実行後にページをリロードする必要があります。setcookie() - ページをリロードするまで、設定クッキーの結果は使用できません。また、1時間よりも古い「古い」時間を使用してみてください。過去1年のようにしてみてください。過去に十分な時間がない場合、一部のブラウザでCookieが削除されません。

0

ドメインでCookieを作成した場合は、同じドメイン名を使用して削除する必要があります。 すなわち

クッキーを設定するには:

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

クッキーを削除するには:

setcookie('mycookie', "", -1, '/', '.my.domain', false); 
関連する問題