Maison >développement back-end >Problème PHP >Comment effacer les cookies php

Comment effacer les cookies php

藏色散人
藏色散人original
2020-11-24 10:02:322149parcourir

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.

Comment effacer les cookies php

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn