Delete de cookie en PHP - PHP - Programmation
Marsh Posté le 03-02-2006 à 15:44:32
http://fr2.php.net/manual/fr/funct [...] p#AEN58035
Pour effacer un cookie, il suffit de lui mettre une duree de vie negative
Marsh Posté le 03-02-2006 à 15:51:18
non, pas une valeur vide sinon le cookie n'expire qu'a la fin de la session, ca ne le supprime pas immediatement
Marsh Posté le 03-02-2006 à 16:06:36
Ce n'est pas bien la durée de vie négative ? Ca ne fait pas pro ?
Marsh Posté le 03-02-2006 à 16:10:56
tout ce qu'il faut c'est que ca soit efficace...
teste, vois lequel te convient le mieux, car pour moi c'est unset() le mieux...
En voyant le code tu sait tout de suite que tu detruis la variable, alors qu'en modifiant la durée il faut porter une attention supplémentaire a ta lign de code.
Apres c au feeling
Marsh Posté le 03-02-2006 à 16:13:59
lol bon alors je viens de test les 2 methodes :
if ($module == "4" )
{
setcookie("session_id", "", time() - 3600);
$session_id = $HTTP_COOKIE_VARS[ "session_id"];
echo $session_id;
unset ( $_COOKIE['session_id'] );
$session_id = $HTTP_COOKIE_VARS[ "session_id"];
echo $session_id;
}
...et les 2 echo me renvoie la valeur originelle du cookie ...
/me cherche une corde pour se pendre
Marsh Posté le 03-02-2006 à 16:39:30
le tableau $HTTP_COOKIE_VARS n'est tout simplement modifier ni par setcookie (qui ne fait qu'envoyer au navigateur sans rien modifier d'autre) ni par le unset que tu fais sur une autre variable tableau contenant les même informations.
Si tu utilises $HTTP_COOKIE_VARS il faut que tu fasses un setcookie pour effacer la valeur dans le cookie du navigateur et un unset sur $HTTP_COOKIE_VARS. Si tu utilises $_COOKIE alors le unset est censé sufire.
En tout cas, si on utilise une de ces deux variables, il faut s'y tenir partout et ne pas utiliser un coup l'un et un coup l'autre.
Marsh Posté le 03-02-2006 à 17:04:05
2Spartiate a écrit : lol bon alors je viens de test les 2 methodes : |
C'est normal, les cookies sont chargés en mémoire, la suppression ne prendra effet qu'au prochain rechargement.
Et comme le dit omega2 tu fais un unset sur $_COOKIE puis tu testes $HTTP_COOKIE_VARS
Marsh Posté le 03-02-2006 à 18:54:47
Merci a vous ! ^^
Le probleme est résolu, en effet en y reflechissant, c klr que le navigateur avait gardé le cookie en mémoire.
Cepandant, avec la methode unset(), sur le meme tableau $HTTP_COOKIE_VARS, permet d'eviter de recharger la page, ce que ne permet pas visiblement l'autre methode.
... un point the_bigboo et les partisans du unset()
La balle au centre, merci a vous ^^
Marsh Posté le 03-02-2006 à 19:24:36
2Spartiate a écrit : ... un point the_bigboo et les partisans du unset() |
Marsh Posté le 03-02-2006 à 19:37:00
ben je sais pas , on cherche a effacer une variable , c'est la seule fonction d'unset()
tu la vois dans ton code tu sais tout de suite ce que ca fait... alors que donner un autre parametre au cookie c plus chiant, et ca t'oblige a regarder ton code plus en détail...
La meilleure option etant d'utiliser unset() et d'avoir un code bien commenté.
Marsh Posté le 03-02-2006 à 15:41:10
Bonjour a tous ^^
Bon je suppose que c un sujet qui reviens souvent, mais là j'avoue ke je trouve ca completement illogique, mon histoire lol.
Voila g devellopé une zone client en PHP, avec inscription, et authentification.
Jusque la pas de probleme: le script recupere les info dans MySQL, et crée un cookie de session, la session est open:
Maintenant j'en suis a la création de l'option de logout, cad du delete du cookie.
Ho bien sur, je vois d'ici les ptis malins me repondre:
ou
...car c gneralement ce qu'on fait pour delete un cookie lol.
Eh bien non, ca marche pas, c la raison de mon poste ici
Alors il faut savoir que ma zone client est codée orientée objet (sous forme de module, en include sur la page index)
...on aurait put penser que ca viens de là; d'une variable mal traitée dans un module tiers; mais non:
ma procedure de delete du cookie est au tout debut de la page index.php:
... et la comble de la torture cérébrale, le echo renvois la valeur du cookie, comme si la ligne
...n'etait pas du tout interprétée...
Enfin, a tout hasard, g testé avec mes deux navigateur: Mozilla et IE, et le pb est le meme
...un volontaire, pour s'arracher les cheveux avec moi ? ^^
Merci d'avance.
---------------
http://www.freelance-project.org