Maison >développement back-end >Problème PHP >Comment effacer les cookies php
Comment effacer les cookies php : créez d'abord un exemple de fichier PHP ; puis créez des cookies via setcookie ; enfin effacez les cookies créés via "setcookie('test','',time()-3600);" méthode C'est tout.
Recommandé : "Tutoriel vidéo PHP"
L'environnement d'exploitation de ce didacticiel : système Windows 7, PHP version 5.6, ce La méthode est applicable pour toutes les marques d’ordinateurs.
PHP efface le COOKIE, PHP ne peut pas supprimer le COOKIE ?
Définir la période de validité du COOKIE, l'expiration du COOKIE
Le manuel PHP mentionne :
PHP prend en charge de manière transparente les cookies HTTP. Un cookie est un mécanisme qui stocke des données sur un navigateur distant pour suivre et identifier les utilisateurs. Les cookies peuvent être définis à l'aide des fonctions setcookie() ou setrawcookie(). Les cookies font partie des en-têtes HTTP, donc la fonction setcookie() doit être appelée avant que d'autres informations ne soient envoyées au navigateur, de la même manière que les restrictions sur la fonction header().
setcookie(): bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] )
Pour supprimer un cookie, vous devez vous assurer que sa date d'expiration est située dans le passé pour déclencher le mécanisme de suppression du navigateur.
La façon de supprimer un cookie est de définir la période de validité du cookie avant l'heure actuelle, ce que font presque tous les programmeurs PHP.
Par exemple :
setcookie('test','true',time()+3600); //创建cookie setcookie('test','',time()-3600); //清除建立的cookie
================================= == ================================================
Si vous setcookie("test", '');
print_r($_COOKIE);
Le résultat est que tout le tableau $_COOKIE est vide, pas seulement $_COOKIE['testcookie']. pour capturer Package, observez l'en-tête http renvoyé et constatez que l'en-tête http est en fait
Set-Cookie: testcookie=deleted; expires=Mon, 18-Jun-2007 02:42:33 GMT
Cela montre que setcookie("testcookie", ''); en php Il n'y a aucune explication dans le manuel.
Finalement, j'ai lu le code source de php et j'ai finalement découvert la vérité (c'est l'avantage de l'open source, s'il y a une histoire intérieure peu claire, vérifiez directement le code source)
Le code suivant peut être utilisé en php5. Trouvé près de la ligne 99 de ext/standard/head.c dans le paquet de code source 20 Linux
if (value && value_len == 0) { time_t t = time(NULL) - 31536001; dt = php_format_date("D, d-M-Y H:i:s T", sizeof("D, d-M-Y H:i:s T")-1, t, 0 TSRMLS_CC); sprintf(cookie, "Set-Cookie: %s=deleted; expires=%s", name, dt); efree(dt); } else { sprintf(cookie, "Set-Cookie: %s=%s", name, value ? encoded_value : ""); if (expires > 0) { strcat(cookie, "; expires="); dt = php_format_date("D, d-M-Y H:i:s T", sizeof("D, d-M-Y H:i:s T")-1, expires, 0 TSRMLS_CC); strcat(cookie, dt); efree(dt); } }
Il est clairement affiché. dans le code source, if (value && value_len == 0), lorsque value_len est 0
sprintf(cookie, "Set-Cookie: %s=deleted; expires=%s", name, dt);
enverra l'en-tête http pour supprimer le cookie au navigateur.
Enfin nous pouvons conclure que l'utilisation de
setcookie($cookiename, '');或者 setcookie($cookiename, NULL);
en php supprimera le cookie, bien sûr il n'est pas dans ces manuels.
============================================ == ==========================================
php le cookie ne peut pas être supprimé/purgé a expiré ?
Aujourd'hui, j'ai utilisé des cookies pour me connecter au site Web. Après le débogage, j'ai utilisé
setcookie("username", "username", time()+1000,"/php100/");
pour stocker les informations de connexion de l'utilisateur, puis utilisé
setcookie("username", "", time()-3600);
pour me déconnecter. Lorsqu'il a été testé sous IE, cela a fonctionné. Toutes les questions. Puisque vous créez un site Web, vous devez être compatible avec autant de navigateurs que possible, haha. Je l'ai donc testé dans Firefox et tout a bien fonctionné lors de la connexion. Mais lorsque je l'ai lancé, j'ai rencontré des problèmes. Il n'y a aucun moyen de se déconnecter, l'utilisateur est toujours connecté. J'ai donc vérifié la différence entre les enregistrements de cookies dans IE et Firefox, et après les tests, je m'en suis soudain rendu compte.
Il s'avère que si le quatrième paramètre (paramètre de chemin légal) de setcookie() n'est pas spécifié, le répertoire courant sera utilisé comme chemin légal par défaut, et le chemin que j'ai testé est : http:/ /127.0.0.1/php/ rss2fla/data /log.php, donc les chemins de cookies définis lors de la connexion et de la déconnexion sont différents.
IE est plus convivial que Firefox Haha, lors de la spécification du chemin, il écrasera la variable de cookie du même nom sous l'IP actuelle. Cependant, FireFox est plus strict, ce qui entraîne une nouvelle variable. ..
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!