Impossible d'effacer un cookie

Impossible d'effacer un cookie - PHP - Programmation

Marsh Posté le 29-05-2003 à 13:55:35    

Bonjour,
 
Je n'arrive pas à trouver d'où vient l'erreur. J'utilise un cookie pour la connexion automatique de mes clients sur mon site. Or après leur déconnexion du site (avec effacement des cookies) quand il se reconnecte le cookie est toujours là.
 
Peut-être trouverez-vous l'erreur ?
 
Voici quelques bout de code sur mon site d'où pourrait peut etre venir le problème :
* si le client vient de cliquer sur "inscription sur le Site"

Code :
  1. // si l'inscription s'est bien déroulée, on envoie un cookie des identifiants chez le client
  2.   $expire = 24*3600*365*1; // 1 an
  3.   setcookie("username",$username,time()+$expire,"/" );
  4.   setcookie("password",$password,time()+$expire,"/" );


 
* si le client vient de cliquer sur "Connection sur le Site"

Code :
  1. // si la connexion s'est bien déroulé, on envoie un cookie des identifiants chez le client pour ne plus qu'il ait besoin de se connecter
  2. if ( !$_COOKIE["username"] && !$_COOKIE["password"] )
  3. {  $expire = 24*3600*365*1; // 1 an
  4.    setcookie("username",$username,time()+$expire,"/" );
  5.    setcookie("password",$password,time()+$expire,"/" );
  6. }


La connexion doit donc ne se faire qu'une fois
 
* si le client vient de cliquer sur "Se déconnecter"

Code :
  1. // destruction des cookies du client
  2.   setcookie("username" );
  3.   setcookie("password" );
  4.   session_start();
  5.   $old_user = $valid_user;  // pour dire la personne qui vient de se déconnecter
  6.   $result_unreg = session_unregister("valid_user" );
  7.   $result_dest = session_destroy();
  8. // crée la page HTML
  9. if (!empty($old_user))
  10. {
  11.   if ($result_unreg && $result_dest)
  12.   {
  13.     // si la déconnexion a bien réussie
  14.     // creation de la page web
  15.     ...
  16.   }
  17. }


 
Donc après je me suis dit que sur la page d'accueil, il fallait bien faire une fonction pour tester si le cookie existe chez le client
 
* index.html

Code :
  1. test_cookie();
  2. session_start();
  3. ...  // création de la page d'accueil


 
avec la fonction test_cookie commpe suit :

Code :
  1. function test_cookie()
  2. {
  3. global $valid_user;
  4. // vérification si la personne est toujours loggé
  5. if ( !session_is_registered("valid_user" ) )
  6. {
  7.     if ( $_COOKIE["username"] && $_COOKIE["password"] )
  8.     {  $username = $_COOKIE["username"];
  9.         $passwd   = $_COOKIE["password"];
  10.             if( login($username, $passwd) )  // vérification si l'utilisateur est dans la DB
  11.            {    $valid_user = $username;  // si l'utilisateur est dans la DB, on enregistre sa session
  12.                  session_register("valid_user" );
  13.            }
  14.      }
  15. }
  16. }


 
Voilà les autres parties du code ont l'air de marcher cqr avant je n'avais pas cet gestion du cookie et tout marchait nickel.
 
Si vous avez des suggestions ...
 
Cédric

Reply

Marsh Posté le 29-05-2003 à 13:55:35   

Reply

Marsh Posté le 29-05-2003 à 14:17:02    

:heink: je vois pas pq tu esperes que le cookie soit plus là à la "sortie" du site si tu lui met une expiration d'un an....


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 29-05-2003 à 14:18:30    

(pq tu mets le mot de passe dans le cookie [:psychokwak])


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 29-05-2003 à 15:08:49    

c'est pas possible d'effacer le cookie alors ?
 
Je croyais que la commande setcookie avec le nom de la variable appelé toute seule : setcookie("variable" ) ; effacait le cookie ?

Reply

Marsh Posté le 29-05-2003 à 15:50:03    

ça je sais pas, mais lis la doc au sujet de l'expiration, c'est tres certainement indiqué qu'il faut mettre un qqchose comme 0 ou -1 pour que le cookie soit un cookie 'session only'


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 29-05-2003 à 15:50:33    

de plus, si tu utilises les sessions de php, je vois pas pq tu geres un cookie manuellement (avec le mot de passe dedans en plus? [:mlc])


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 29-05-2003 à 16:27:47    

Le cookie me sert à ce que les personnes n'aient plus besoin de rentrer leur mot de passe quand elles se connecte à nouveau sur le site. Elles sont reconnus et loggé automatiquement.
 
Si je ne passe pas par des cookie la session marche aussi très bien mais les gars sont obligés de se loggé à chaque visite sur mon site. C'est pour çà que dans le cookie je met le login et le pass.
 
Oui tu as raison l'erreur provenait de l'expiration. C'est bon c'est résolu. Merci.
 
Cédric

Reply

Marsh Posté le 29-05-2003 à 16:37:49    

mais euh pq tu voulais que le cookie soit effacé alors  :pt1cable:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 29-05-2003 à 23:27:25    

Un cookie par défaut expire à la fin de la session.
 
Pour éviter ça, on met une date d'expiration.
 
Il suffit donc de virer la date d'expiration qui a été mise et le cookie sera détruit tout seul comme un grand lorsque l'uitilisateur va quitter le site.


Message édité par MagicBuzz le 29-05-2003 à 23:27:38
Reply

Marsh Posté le 29-05-2003 à 23:35:45    

MagicBuzz a écrit :

Un cookie par défaut expire à la fin de la session.
 
Pour éviter ça, on met une date d'expiration.
 
Il suffit donc de virer la date d'expiration qui a été mise et le cookie sera détruit tout seul comme un grand lorsque l'uitilisateur va quitter le site.

un peu grillé je pense ;)
bon ok j'avais pas expliqué mais il a trouvé tout seul en lisant la doc :)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 29-05-2003 à 23:35:45   

Reply

Marsh Posté le 29-05-2003 à 23:41:16    

the real moins moins a écrit :

un peu grillé je pense ;)
bon ok j'avais pas expliqué mais il a trouvé tout seul en lisant la doc :)


En fait j'avais lu au début où tout le monde s'embourbait un peu, et j'ai lu les derniers posts qu'après avoir posté :D

Reply

Sujets relatifs:

Leave a Replay

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