Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1539 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Delete de cookie en PHP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Delete de cookie en PHP

n°1298614
2Spartiate
Posté le 03-02-2006 à 15:41:10  profilanswer
 

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:

Code :
  1. setcookie("session_id", $session_id, time()+3600);


 
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:

Code :
  1. setcookie("session_id" );


ou

Code :
  1. setcookie("session_id", "",0);


 
...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   :ange:  
 
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:
 

Code :
  1. $module= $_GET['module'];
  2. if ($module == "4" )
  3. {
  4. setcookie("session_id", "", 0);
  5. $session_id = $HTTP_COOKIE_VARS[ "session_id"];
  6. echo $session_id;
  7. }


 
 
... et la comble de la torture cérébrale, le echo renvois la valeur du cookie, comme si la ligne

Code :
  1. setcookie("session_id", "", 0);


...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
mood
Publicité
Posté le 03-02-2006 à 15:41:10  profilanswer
 

n°1298620
stf-m
Posté le 03-02-2006 à 15:44:32  profilanswer
 

http://fr2.php.net/manual/fr/funct [...] p#AEN58035
Pour effacer un cookie, il suffit de lui mettre une duree de vie negative :)

n°1298624
the_bigboo
Posté le 03-02-2006 à 15:47:48  profilanswer
 

ou une valeur vide :)

n°1298628
stf-m
Posté le 03-02-2006 à 15:51:18  profilanswer
 

non, pas une valeur vide sinon le cookie n'expire qu'a la fin de la session, ca ne le supprime pas immediatement

n°1298637
the_bigboo
Posté le 03-02-2006 à 16:02:26  profilanswer
 

unset ( $_COOKIE['nom_du_cookie'] ); ??

n°1298646
stf-m
Posté le 03-02-2006 à 16:06:36  profilanswer
 

Ce n'est pas bien la durée de vie négative ? Ca ne fait pas pro ?

n°1298649
the_bigboo
Posté le 03-02-2006 à 16:10:56  profilanswer
 

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

n°1298652
2Spartiate
Posté le 03-02-2006 à 16:13:59  profilanswer
 

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 :(


---------------
http://www.freelance-project.org
n°1298680
omega2
Posté le 03-02-2006 à 16:39:30  profilanswer
 

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.


Message édité par omega2 le 03-02-2006 à 16:39:57
n°1298690
the_bigboo
Posté le 03-02-2006 à 16:50:08  profilanswer
 

on en reviens donc a ce que je disais :o

mood
Publicité
Posté le 03-02-2006 à 16:50:08  profilanswer
 

n°1298702
stf-m
Posté le 03-02-2006 à 17:04:05  profilanswer
 

2Spartiate a écrit :

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 :(


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

n°1298800
2Spartiate
Posté le 03-02-2006 à 18:54:47  profilanswer
 

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 ^^


---------------
http://www.freelance-project.org
n°1298814
stf-m
Posté le 03-02-2006 à 19:24:36  profilanswer
 

2Spartiate a écrit :

... un point the_bigboo et les partisans du unset()
La balle au centre, merci a vous ^^


 :kaola: [:aless]  :fou:  :(  :cry:  :cry:  :cry:  :cry:  :cry:  

n°1298819
the_bigboo
Posté le 03-02-2006 à 19:37:00  profilanswer
 

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é.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Delete de cookie en PHP

 

Sujets relatifs
[PHP] - Aide : Expression Régulière[PHP] mail avec pieces jointes ! probleme avec Lotus Notes [RESOLUT]
[PHP] faire un delayoracle : delete infini ...
[PHP/MYSQL] création d'un service de blogChemin d'accès en PHP ?
[PHP] Programmation avec SNMPComment récupérer la résolution d'une page en CSS/PHP ?
PHP, d'un serveur à un autre...Petite class PHP d'automatisation des requetes SQL standard
Plus de sujets relatifs à : Delete de cookie en PHP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR