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?
http://stackoverflow.com/a/25967822/1642018 – AMB
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