Effacer un cookie ? [PHP] - PHP - Programmation
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
Marsh Posté le 02-05-2002 à 13:40:50
Merci pour les réponses mais :
ça ne fonctionne pas !!!!
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
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
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.
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
Marsh Posté le 02-05-2002 à 14:34:27
et me fait rentré sur mon site.
Comment procéder ?
merci
Alex01
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 à "".
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 ?
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é
Marsh Posté le 02-05-2002 à 16:02:35
Et bien ça ne fonctionne pas !
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à !!!
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 !!!!!!!!
je ne comprend pas !
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
J'espère que le nuit me portera conseil
A demain
Alex01
Marsh Posté le 02-05-2002 à 16:38:49
Alex01 a écrit a écrit : Merci pour les réponses mais : ça ne fonctionne pas !!!! 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" ?
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
Alex01
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