[PHP] Effacer un cookie ?

Effacer un cookie ? [PHP] - PHP - Programmation

Marsh Posté le 02-05-2002 à 12:05:33    

Bonjour à tous
 
Je ne parviens pas à effacer un cookie que j'ai emis sur des postes clients.
 
J'insère le code : Setcookie("nom_du_cookie" );
Mais mon cookie reste en place dans le rep. cookie de Windows.
(Au passage, le fichier txt du cookie porte le nom de mon serveur et pas celui que j'ai attribué par défaut dans le php.ini. Par contre dans le fichier 'nom_du_serveur.txt' je retouve le nom que j'ai donné au cookie : Est-ce Normal?).
 
Comment puis-je effacer mon cookie immédiatement.
Merci
 
Alex01

Reply

Marsh Posté le 02-05-2002 à 12:05:33   

Reply

Marsh Posté le 02-05-2002 à 12:07:14    

en lui donnant une "date de peremption" dans le passé

Reply

Marsh Posté le 02-05-2002 à 12:08:27    

Alex01 a écrit a écrit :

 
(Au passage, le fichier txt du cookie porte le nom de mon serveur et pas celui que j'ai attribué par défaut dans le php.ini. Par contre dans le fichier 'nom_du_serveur.txt' je retouve le nom que j'ai donné au cookie : Est-ce Normal?).




 
oui
il faut faire la difference entre le "nom" du cookie et la façon dont ton browser le stocke
si tu essaies avec netscape tu verras que le cookie est stocké differement

Reply

Marsh Posté le 02-05-2002 à 13:40:50    

Merci pour les réponses mais :
 
ça ne fonctionne pas !!!! :heink:  :heink:  
 
Voici les lignes de code que j'ai testé :
<?php
session_start();
Setcookie("Cookie_Sicaweb","id_emp",time()-86400);
 
print ("<p><font size=\"4\" face=\"Arial, Helvetica, sans-serif\" color=\"#0000FF\">" );
print ("Vous venez d'être désinscrit(e).............?>
 
j'ai aussi essayé :
Setcookie("Cookie_Sicaweb" );
Setcookie("Cookie_Sicaweb","id_emp",time());
Setcookie("Cookie_Sicaweb",time());
 
"id_emp" est une variable transmise au cookie.
 
Rien à faire, mon fichier nom_du_serveur.txt est toujours présent dans le rep. Cookie de Windows.
 
Que puis-je faire ?
 
Merci  
 
Alex01

Reply

Marsh Posté le 02-05-2002 à 14:16:45    

Alex01 a écrit a écrit :

 
Rien à faire, mon fichier nom_du_serveur.txt est toujours présent dans le rep. Cookie de Windows.
 
Que puis-je faire ?




 
peut etre, mais l'important c'est qu'il ne soit plus envoyé au serveur correspondant avec tes requetes... essaie

Reply

Marsh Posté le 02-05-2002 à 14:18:18    

il est encore présent mais n'a plus de valeur réelle.
(il n'y pas moyen de deleter le cookie à partir d'un site)
 
si c'est pour stocker un login/pwd, donne lui des valeurs nulles, ça écrasera les anciennes.

Reply

Marsh Posté le 02-05-2002 à 14:32:51    

Ok, je ne savais pas que les cookies expirés n'étaient pas effacés du poste client.
 
Par contre j'utilise les lignes de code suivantes pour voir si l'utilisateur est enregistré ou pas :
 
 
if (isset($HTTP_COOKIE_VARS["$nom_cookie"])) //Si le cookie existe chez le visiteur
{
$session=$HTTP_COOKIE_VARS["$nom_cookie"];
mysql_connect("$serveur","$login","$pass" );
control_session($database,$session);  //controle si la session utilisateur existe
}
else  //Si le cookie n'existe pas    
{
header("location:./intranet2/inscription/formulaire.php" );
exit;
}
 
Donc : Si le cookie existe: je vais chercher les paramètres dans la session corespondante et je vais vers une autre page
 
Sinon, je vais ailleur.
 
Est-ce que c'est bon ???????
Puis-je m'en sortir avec ce test pour savoir si un utilisateur est valide (cookie non expiré) ou si il n'est pas valide (cookie expiré).
 
Parceque à chaque fois, (malgrè les setcookie("nom_du_cookie" );), le système considère que le cookie est valide et me f

Reply

Marsh Posté le 02-05-2002 à 14:34:27    

et me fait rentré sur mon site.
 
Comment procéder ?
 
merci  
Alex01

Reply

Marsh Posté le 02-05-2002 à 14:42:44    

tu as pas une table derrière pour vérifier le login/pwd ?
sinon de toute façon:
if (isset($HTTP_COOKIE_VARS["$nom_cookie"]) && ($HTTP_COOKIE_VARS["$nom_cookie"]!="" ) )  
{  
 
dans la déconnexion/effacement du cookie tu mets le login et le pwd à "".

Reply

Marsh Posté le 02-05-2002 à 14:51:22    

En fait, mon cookie contient le nom de la session du l'utilisateur qui est stockée sur ma Base de Données. Et c'est cette session qui contient le seul paramètre que je stocke : l'ID_employe correspondant.
 
Voici le code de création du cookie :
 
session_start();          //création d'une session
$id_session=session_id(); //donne l'ID de la session ainsi générée
session_register("id_emp" ); //enregistrement de la valeur de "id_emp" dans la session
 
le reste est paramétré dans php.ini (nom du cookie, durée de vie,...).
 
Avec ceci comment puis-je procéder pour invalider le cookie ?

Reply

Marsh Posté le 02-05-2002 à 14:51:22   

Reply

Marsh Posté le 02-05-2002 à 15:24:37    

lors de la déconnexion  
session_unregister("id_emp" ); //delete la variable de session
session_destroy() // détruit la session
 
si tu crées en plus toi même un cookie qui stocke l'id de session (c inutile puisque la session crée d'office un cookie), tu peux le détruire en écrasant la valeur de ton cookie par ""
setCookie("session", "", time()-86400);
 
normalement il ne devrait plus avoir aucune trace de ton user précédemment connecté

Reply

Marsh Posté le 02-05-2002 à 16:02:35    

Et bien ça ne fonctionne pas ! :cry:  :cry:  :cry:  :cry:  
 
Le but du jeux :
Certain utilisateurs de l'Intranet possèdent une session qui leur est propre (les utilisateur identifiés).
D'autres, par contre, ne sont que des invités avec des droits minimun sur l'Intranet. Et pour tous les invités il n'y a qu'une seule et unique Session. Ils ont tous un cookie sur leur poste contenant le même identifiant de Session.
 
C'est pour cette réson que je ne peux détruire la session ou son contenu.
 
Par contre si je veux supprimer le cookie c'est pour le cas ou l'utilisateur passe du type invité au type authentifié pour obtenir l'accès à des zones sécurisées de l'Intranet. En supprimant le cookie, lors de la reconnexion à l'Intranet, Le serveur ne reconnait pas l'utilisateur et l'envois sur un formulaire d'incription sur lequel il peut s'authentifier ou choisir l'option d'être un simple invité. Le fait de choisir l'une ou l'autre des option crait un cookie qui permet au système, lors de la reconnexion, de passer le formulaire et d'arriver directement à l'Intranet.
 
Voilà !!! :p  
 
Donc il me faut :
soit invalidé le cookie
soit en supprimer son contenu de manière à ce que lors du control le serveur ne trouve pas l'Id session et renvoie vers le formulaire.
 
setCookie("session", "", time()-86400);  
Avec "session" = "session",
ou "session" = "nom de la session" (eefgff54696ejhddjr56.....)
ou "session" = "nom du cookie" ('cookie_sicaweb' défini dans le php.ini)
NE FONCTIONNE PAS !!!!!!!!
 
 :cry:  :cry:  :cry:  :cry:  :cry:  
je ne comprend pas !

Reply

Marsh Posté le 02-05-2002 à 16:36:08    

Je quitte mon bureau jusqu'à demain matin, si quelqu'un peut m'aider entre temps ça serait super !!
 
Merci à tous ceux qui ont participés à ce sujet et qui ont essayer de m'aider  :jap:  :jap:  :jap:  
 
J'espère que le nuit me portera conseil
 
A demain
 
Alex01

Reply

Marsh Posté le 02-05-2002 à 16:38:49    

Alex01 a écrit a écrit :

Merci pour les réponses mais :
 
ça ne fonctionne pas !!!! :heink:  :heink:  
 
Voici les lignes de code que j'ai testé :
<?php
session_start();
Setcookie("Cookie_Sicaweb","id_emp",time()-86400);
 
print ("<p><font size=\"4\" face=\"Arial, Helvetica, sans-serif\" color=\"#0000FF\">" );
print ("Vous venez d'être désinscrit(e).............?>
 
j'ai aussi essayé :
Setcookie("Cookie_Sicaweb" );
Setcookie("Cookie_Sicaweb","id_emp",time());
Setcookie("Cookie_Sicaweb",time());
 
"id_emp" est une variable transmise au cookie.
 
Rien à faire, mon fichier nom_du_serveur.txt est toujours présent dans le rep. Cookie de Windows.
 
Que puis-je faire ?
 
Merci  
 
Alex01  




 
si c'est du php,"id_emp" ne devrait t il pas plutot s ecrire ainsi "$id_emp" ?

Reply

Marsh Posté le 03-05-2002 à 08:29:26    

Non non, il ne faut pas mettre le $ devant le nom de variable (dans ce cas là biensûr !)
 
mais merci quand même  :jap:  
 
Alex01

Reply

Sujets relatifs:

Leave a Replay

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