2009-03-09 8 views
5

J'essaye d'écrire du code PHP pour supprimer tous les cookies d'utilisateur sur mon domaine.Je ne peux pas supprimer les cookies qui ont été mis en JavaScript sur le serveur

Voici ce que je suis:

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

L'exécution de ce code sur tous les cookies http://www.example.com/delete_cookies.php supprime qui ont été mis sur le serveur, mais pas les cookies qui ont été mis en JavaScript.

J'ai vérifié en utilisant la boîte de dialogue de cookies de Firefox que les cookies problématiques sont en effet (chemin = /; domaine = www.exemple.com). En utilisant les en-têtes HTTP Live, je peux voir que l'en-tête suivant est envoyé:

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

Je crois que oui la commande setcookie fonctionne comme prévu. Firefox n'honore pas la demande. Une autre chose que j'ai remarquée est que si je mets un cookie avec domain=www.example.com sur le serveur, alors il est listé dans la boîte de dialogue cookie Firefox avec domain=".www.example.com", mais si je mets le cookie suivant en utilisant le code JavaScript, alors le premier point est pas ajouté.

Qu'est-ce que je fais mal? Comment puis-je supprimer ces cookies?

+0

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

+0

Vous trouverez peut-être [ '$ Cookie-> delete()'] (https://github.com/delight-im/PHP-Cookie/blob/ 004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php # L173) utile, tel que trouvé dans [cette bibliothèque autonome] (https://github.com/delight-im/PHP-Cookie). – caw

Répondre

5

J'ai eu un problème similaire et il a été résolu en ne passant pas le domaine.

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

Sur une note de côté de cookie_spec "Réglage du chemin d'une valeur de niveau supérieur ne remplace pas les autres applications de chemin plus spécifiques. En cas de correspondances multiples pour un nom de cookie donné, mais avec des chemins séparés Tous les cookies correspondants seront envoyés "Donc, si vous avez des cookies de même nom à différents emplacements, vous devrez les supprimer.

Questions connexes