Veut pas virer un cookie malgré méthode fonctionnant pour un autre

Veut pas virer un cookie malgré méthode fonctionnant pour un autre - PHP - Programmation

Marsh Posté le 24-01-2004 à 01:09:14    

Dans mon site j'ai une authentification par cookie (qui intervient uniquement si aucune session n'est ouverte, ca permet de limiter les échanges client<->serveur :wahoo:  
 
 

Code :
  1. <?php
  2. include('include.php'); //rien que des fonctions usuelles qui n'ont rien à voir avec les cookies.
  3. setcookie('lghp','',time()-10000); //suppression du cookie "lghp"
  4. $var = $_COOKIE['lghp'];
  5. include("En-tete.php" ); // que du html
  6. echo $var;
  7. include("En-bas.php" ); // que du html
  8. ?>


 
Mon echo $var m'affiche le contenu du cookie que normalement je viens de supprimer, je ne comprend pas :??:  
 
La methode de suppression que j'utilise fonctionne impecablement bien pour un autre cookie (définit de la meme manière), d'où mon incompréhension.
 
Si vous avez une idée n'hesitez pas car là je sais plus quoi essayer :sweat:

Reply

Marsh Posté le 24-01-2004 à 01:09:14   

Reply

Marsh Posté le 24-01-2004 à 01:27:41    

P'tre dire une bétise, mais ça me semble parfaitement normal :
 

  • Tu charges ta page dans le navigateur : envoi du cookie client > serveur
  • Ton script indique de supprimer le cookie client, $_COOKIE du serveur reste intact
  • Tu lis $_COOKIE et tu demandes un affichage


Normal que tu vois le cookie puisqu'il existe toujours sur le serveur :)
 
Rajoute un unset($_COOKIE['lghp']); pour l'effacer des 2 côtés :)

Reply

Marsh Posté le 24-01-2004 à 01:34:59    

naceroth a écrit :

P'tre dire une bétise, mais ça me semble parfaitement normal :
 

  • Tu charges ta page dans le navigateur : envoi du cookie client > serveur
  • Ton script indique de supprimer le cookie client, $_COOKIE du serveur reste intact
  • Tu lis $_COOKIE et tu demandes un affichage


Normal que tu vois le cookie puisqu'il existe toujours sur le serveur :)
 
Rajoute un unset($_COOKIE['lghp']); pour l'effacer des 2 côtés :)


 
Mais le setcookie() que je fais devrais changer la date d'expiration pour une date négative(sur le serveur aussi?), donc le supprimer aussitot non? (ca fonctionne pour un autre cookie déclaré identiquement, c'est ca qui me trouble!)
 
J'essaye ca de suite ;)  
 
Merci :wahoo:

Reply

Marsh Posté le 24-01-2004 à 01:40:40    

aspegic500mg a écrit :


 
Mais le setcookie() que je fais devrais changer la date d'expiration pour une date négative(sur le serveur aussi?), donc le supprimer aussitot non? (ca fonctionne pour un autre cookie déclaré identiquement, c'est ca qui me trouble!)


 
Ben un cookie n'existe que chez le client, donc si tu changes une date d'expiration, ce sera celle du cookie client. Et ils ne sont transmis qu'au chargement d'une page et placés dans la variable globale $_COOKIE qu'à ce moment là.
 
Donc, à moins de recharger la page, il me semble que $_COOKIE reste en état jusqu'au prochain envoi de cookies

Reply

Marsh Posté le 24-01-2004 à 01:43:22    

naceroth a écrit :


 
Ben un cookie n'existe que chez le client, donc si tu changes une date d'expiration, ce sera celle du cookie client. Et ils ne sont transmis qu'au chargement d'une page et placés dans la variable globale $_COOKIE qu'à ce moment là.
 
Donc, à moins de recharger la page, il me semble que $_COOKIE reste en état jusqu'au prochain envoi de cookies


 
Ok
 
Là j'ai fais ce que tu m'a dis (unset...) et ca supprime effectivement la valeur de $_COOKIE['lghp'] mais pourtant ma fonction d'authentification me relog juste aprés, donc le cookie n'a pas l'air réèlement supprimé :heink:  
 
Dans quel dossier (sous windows) on peut voir les cookies deja? :sleep:

Reply

Marsh Posté le 24-01-2004 à 01:48:33    

Dépend du navigateur et de la version de Windoze.
 
Sous IE et Windows 2000/XP c'est c:\documents and settings\nom d'utilisateur\cookies et c:\documents and settings\nom d'utilisateur\local settings\temporary internet files (les 2, ça se propage beaucoup ces bestioles)
 
(c'est là qu'on aime fbird et mozilla quand on bosse :D)


Message édité par naceroth le 24-01-2004 à 01:49:27
Reply

Marsh Posté le 24-01-2004 à 01:56:49    

(J'ai mis des controles partout dans mes scripts pour voir ce qui se passe)
 
Ma fonction qui log automatiquement si un cookie est trouvé contient ca:
if(isset($_COOKIE['lghp'])){
 //ici ca log le gars en session
 // aprés avoir visité logout.php le code qui est ici est executé, alors que le cookie "devrait" etre supprimé
}
 
Je suis allé voir dans le dossier de windows et le cookie est toujours là meme aprés avoir été sur logout.php, donc le probleme vient effectivement de la suppression du cookie :na:  
 
Dans mon logout.php j'en suis à ca:

Code :
  1. <?php
  2. include('include.php');
  3. unset($_COOKIE['lghp']);
  4. setcookie('lghp','',time()-10000);
  5. session_unregister("login" );
  6. ?>


 
Meme aprés ca le cookie est toujours là!

Reply

Marsh Posté le 24-01-2004 à 02:10:21    

Là encore plus bizzare, j'ai supprimé le cookie manuellement du dossier de windows (celui ou y'a quelques centaines de cookies de tous les sites), et mon script trouve toujours un cookie, alors que quand je fais la meme operation pour l'autre cookie qui a juste le nom different (le script d'authentification le cherche de la meme maniere) il n'est pas trouvé (normal quoi..) :pt1cable:

Reply

Marsh Posté le 24-01-2004 à 02:10:50    

Essaye

Code :
  1. include('include.php');
  2. unset($_COOKIE['lghp']);
  3. if (headers_sent()){
  4.     echo 'oups, problème';
  5. } else {
  6.     setcookie('lghp','',time()-10000);
  7. }
  8. ...


 
Pour s'assurer qu'il exécute bien la ligne

Reply

Marsh Posté le 24-01-2004 à 02:15:44    

naceroth a écrit :

Essaye

Code :
  1. include('include.php');
  2. unset($_COOKIE['lghp']);
  3. if (headers_sent()){
  4.     echo 'oups, problème';
  5. } else {
  6.     setcookie('lghp','',time()-10000);
  7. }
  8. ...


 
Pour s'assurer qu'il exécute bien la ligne


 
ok j'essaye, mais je suis sûr qu'il n'envoi pas d'en-tete avant puisque j'ai essayé en l'envoyant aprés (pour justement avoir les resultat de mes tests) et ca passe nickel, d'ailleurs si je send mon en-tete avant ca me l'affiche en erreur ;)  
 
a tout de suite...

Reply

Marsh Posté le 24-01-2004 à 02:15:44   

Reply

Marsh Posté le 24-01-2004 à 02:19:06    

euh non pas la peine
 
J'ai résolu le problème mais je n'en connais pas la cause:
 
Comme dit plus haut, les cookies sont contenus dans 2 dossiers de windows, j'ai supprimé le cookie en lui meme dans le gros dossier ne contenant que des cookies, ca ne fonctionnait toujours pas, là je viens de fouiller dans les temporary internet files et il y'a aussi des cookies (plutot des raccourci vers cookie, car quand on clique sur un cookie supprimé il dit qu'il n'arrive pas à le trouver dans l'autre dossier d'origine), j'ai trouvé le cookie qui ne voulait pas partir, je l'ai supprimé et ca fonctionne de nouveau nickel (et je me peux me reloguer et redeloguer, ca ne le remet pas dans le dossier temporary)
 
Donc maintenant reste à élucider la question: Pourquoi est-ce qu'un raccourci vers le cookie à été foutu dans le dossier temporaire :heink:  
(parce que si ca se reproduit une fois le site en utilisation par les visiteurs ca le fait pas  de trop :sweat: )

Reply

Marsh Posté le 24-01-2004 à 02:20:50    

// plus de raison d'être :D


Message édité par naceroth le 24-01-2004 à 02:22:10
Reply

Marsh Posté le 02-02-2004 à 12:49:46    

Le probleme est revenu, ce coup-ci avec le cookie d'administrateur (enfin le probleme est le meme), le cookie est encore resté dans le temporary internet files :fou:  
 
Y'aurait-il moyen de spécifier au navigateur qui visite le site de ne pas mettre en cache les fichiers et donc cookies  :??: (à part les images, parce que tout recharger à chaque fois c'est pas possible)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed