2009-03-09 6 views
5

Próbuję napisać kod PHP, aby usunąć wszystkie pliki cookie użytkowników w mojej domenie.Nie można usunąć plików cookie ustawionych w kodzie JavaScript na serwerze

Oto co mam:

<?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); 
} 

Uruchomienie tego kodu na http://www.example.com/delete_cookies.php usuwa wszystkie pliki cookie, które zostały ustawione na serwerze, ale nie cookie, które zostały ustawione w JavaScript.

Sprawdziłem za pomocą okna dialogowego Pliki cookie przeglądarki Firefox, z którego pochodzą problematyczne pliki cookie (path = /; domain = www.example.com). Używając nagłówków Live HTTP, widzę, że wysyłany jest następujący nagłówek:

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

Uważam, że polecenie setcookie działa zgodnie z oczekiwaniami. Firefox nie honoruje tej prośby.

Jedna dodatkowa rzecz, jaką zauważyłem jest to, że jeśli ustawić ciasteczko z domain=www.example.com na serwerze, to znajduje się na liście w oknie dialogowym ciasteczka Firefox z domain=".www.example.com", ale jeśli ustawić następujące ciastko używając kodu JavaScript następnie czołowym kropka jest nie dodany.

Co robię źle? Jak mogę usunąć te pliki cookie?

+0

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

+0

Możesz znaleźć ['$ cookie-> delete()'] (https://github.com/delight-im/PHP-Cookie/blob/ 004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php # L173) pomocne, jak znaleźć w [tej samodzielnej bibliotece] (https://github.com/delight-im/PHP-Cookie). – caw

Odpowiedz

5

Miałem podobny problem i został rozwiązany przez nie przekazanie domeny.

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

Na marginesie od cookie_spec "Ustawianie ścieżki do wartości wyższego rzędu nie zastępują inne bardziej szczegółowe odwzorowanie ścieżki. Jeśli istnieje wiele meczów dla danej nazwy pliku cookie, ale z oddzielnymi ścieżkami wszystkie pasujące pliki cookie zostaną wysłane: "Jeśli więc masz takie same pliki cookie w różnych lokalizacjach ścieżek, będziesz musiał je usunąć.

Powiązane problemy