2009-03-09 23 views
5

Etki alanımdaki tüm kullanıcı çerezlerini silmek için PHP kodu yazmaya çalışıyorum. JavaScript ayarlanan çerezler değilSunucuda JavaScript olarak ayarlanmış çerezler silinemiyor

<?php 
$domain = 'www.example.com'; 
$deleteExpiration = time() - 60*60*24*365*10; // 10 years ago 
foreach (array_keys($_COOKIE) as $cookie) { 
    setcookie($cookie, 0, $deleteExpiration, '/', $domain); 
} 

http://www.example.com/delete_cookies.php Bu kod çalıştırma sunucuda ayarlanan tüm çerezleri siler, fakat: Burada

ne var olduğunu.

Sorunlu tanımlama bilgilerinin gerçekte olduğu Firefox Cookies iletişim kutusunu kullanarak doğrulandım (path = /; domain = www.example.com). Canlı HTTP başlıklarını kullanarak, aşağıdaki başlık gönderilir görebilirsiniz:

Set-Cookie: CookieName=0; expires=Fri, 12-Mar-1999 19:36:15 GMT; path=/; domain=www.example.com 

Yani beklendiği gibi setcookie komutu çalışıyor inanıyoruz. Firefox sadece talebi onurlandırmıyor.

ben sunucuda domain=www.example.com ile bir çerez bırakır, o zaman domain=".www.example.com" Firefox çerez iletişim listelenen olduğunu farkettim ama sonra JavaScript kodu kullanarak aşağıdaki çerez ayarlarsanız lider noktadır ek bir şey eklenmez.

Neyi yanlış yapıyorum? Bu çerezleri nasıl silebilirim?

+0

http://stackoverflow.com/a/25967822/1642018 – AMB

+0

['$ cookie-> delete()'] bulabilirsiniz (https://github.com/delight-im/PHP-Cookie/blob/ 004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php # L173) yardımcı olarak, [bu bağımsız kütüphane] 'de (https://github.com/delight-im/PHP-Cookie). – caw

cevap

5

Benzer bir sorun yaşadım ve yalnızca alan adını geçmeyerek çözüldü. Diğer daha spesifik yol eşleştirmeler geçersiz kılmayan bir üst düzey değerine yolunu ayarlama cookie_spec "bir yan not

setcookie($cookie, '', 1, '/');

. Birden Belirli bir çerez adı için maçları, ancak ayrı yolları ile varsa Tüm eşleşen çerezler gönderilecektir.
"Eğer farklı yol konumlarında aynı isim çerezleri varsa, her birini silmek zorunda kalacaksınız.