100 votes

comment supprimer tous les cookies de mon site web en php

Je me demande si je peux supprimer tous les cookies de mon site Web lorsqu'un utilisateur clique sur se déconnecter, car je l'utilisais comme fonction pour supprimer les cookies, mais cela ne fonctionnait pas correctement:

 setcookie("user",false);
 

Est-il possible de supprimer les cookies d'un domaine en PHP?

185voto

jasonbar Points 7212

PHP setcookie ()

Tiré de cette page, tous les cookies de votre domaine seront supprimés:

 // unset cookies
if (isset($_SERVER['HTTP_COOKIE'])) {
    $cookies = explode(';', $_SERVER['HTTP_COOKIE']);
    foreach($cookies as $cookie) {
        $parts = explode('=', $cookie);
        $name = trim($parts[0]);
        setcookie($name, '', time()-1000);
        setcookie($name, '', time()-1000, '/');
    }
}
 

http://www.php.net/manual/en/function.setcookie.php#73484

47voto

poke Points 64398
 $past = time() - 3600;
foreach ( $_COOKIE as $key => $value )
{
    setcookie( $key, $value, $past, '/' );
}
 

Il est toutefois préférable de mémoriser (ou de le stocker quelque part) les cookies configurés avec votre application sur un domaine et de les supprimer tous directement.
De cette façon, vous pouvez être sûr de supprimer toutes les valeurs correctement.

19voto

Doug Points 749

Je suis d'accord avec certaines des réponses ci-dessus. Je recommanderais simplement de remplacer "time () - 1000" par "1". Une valeur de "1" signifie le 1er janvier 1970, ce qui garantit une expiration à 100%. Donc:

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

3voto

knittl Points 64110

Assurez-vous d'appeler votre fonction setcookie avant toute sortie sur votre site.

De plus, si vos utilisateurs se déconnectent, vous devez également supprimer / invalider leurs variables de session.

1voto

Martin LeBlanc Points 54

Vous devez savoir que divers outils de suivi, tels que Google Analytics, utilisent également des cookies sur votre domaine et vous ne souhaitez pas les supprimer, si vous souhaitez que les données soient correctes dans GA.

La seule solution que je pouvais utiliser consistait à définir les cookies existants sur null. Je ne pouvais pas supprimer les cookies du client.

Donc, pour déconnecter un utilisateur, j'utilise les éléments suivants:

 setcookie("username", null, time()+$this->seconds, "/", $this->domain, 0);
setcookie("password", null, time()+$this->seconds, "/", $this->domain, 0);
 

Bien sûr, cela ne supprime pas TOUS les cookies.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X