Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/06/2006, 13h12   #1
Membre habitué
 
Inscription : mai 2004
Messages : 499
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 499
Points : 149
Points : 149
Par défaut [Cookies] Disparition d'un cookie

Bonjour,

Je voudrais créer un cookie contenant la clé d'un utilisateur. Or, après la création de celui-ci, lorsqu'une nouvelle page est chargée, mon cookie dispataît.

Voici mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
?php /* Date de création: 10/04/2006 */ 
session_start();
setcookie("cleUtilisateur", "");
include("../fichiersAnnexes/fonctionsPhp.inc");
$login = $_POST['login'];
$psw = $_POST['psw'];
$connect = connection("../Pages/identification.php"); 
$requete = "select cle from utilisateurs where login = '$login' and psw = '$psw'" ;
$result = mysql_query($requete, $connect);
$row = mysql_numrows($result);
 
if ($row)
 {
  $row = mysql_fetch_array($result);
  $_COOKIE['cleUtilisateur'] = $row[0];
  $_SESSION['erreur'] = "Vous êtes à présent connecté. Vous pouvez enchérir ou ajouter un commentaire ";
  include("../Pages/identification.php");
  mysql_close($connect);
 } 
else
 {
  renvoiErreur("Votre login ou mot de passe est erronné. Veuillez les réencoder", "../Pages/identification.php", $connect); 
 } 
?>
Lorsque je teste l'existance de mon cookie sur la page "identification.php", tout est OK, mais dès que je charge une autre page du site, mon cookie disparaît.

Merci d'avance pour votre aide.

Christophe.
dubitoph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2006, 13h33   #2
Rédacteur
 
Avatar de wamania
 
Développeur Web
Inscription : juillet 2003
Messages : 676
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2003
Messages : 676
Points : 678
Points : 678
comment l'appelle tu dans les autres pages?

Code :
1
2
3
4
5
6
7
 setcookie("cleUtilisateur", "");
+
$_COOKIE['cleUtilisateur'] = $row[0];
= inutile
 
seulement 
setcookie("cleUtilisateur", $row('0']);
__________________
Articles sur developpez.com
- Gestion des exceptions avec PHP5
- Chiffrement et hash en PHP contre l'attaque Man in the middle
- Aedituus - Espace membre sécurisé en PHP5

Lithium : ORM ActiveRecord PHP5 extrêmement léger
wamania est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2006, 13h47   #3
Membre habitué
 
Inscription : mai 2004
Messages : 499
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 499
Points : 149
Points : 149
Dans les autres pages, je fais

Code :
1
2
3
 
if(!empty($_COOKIE['cleUtilisateur']))
 ...
Quant à l'affectation de mon cookie, j'ai dû effectuer de la sorte car sinon j'avais une erreur de haeder.
dubitoph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2006, 13h49   #4
Rédacteur
 
Avatar de wamania
 
Développeur Web
Inscription : juillet 2003
Messages : 676
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2003
Messages : 676
Points : 678
Points : 678
essaie
Code :
1
2
3
4
5
6
7
8
9
if ($row)
 {
  $row = mysql_fetch_array($result);
  $_COOKIE['cleUtilisateur'] = $row[0];
echo $_COOKIE['cleUtilisateur'];
  $_SESSION['erreur'] = "Vous êtes à présent connecté. Vous pouvez enchérir ou ajouter un commentaire ";
  include("../Pages/identification.php");
  mysql_close($connect);
 }
je ne suis pas sur que ton cookie soit vraiment valable
__________________
Articles sur developpez.com
- Gestion des exceptions avec PHP5
- Chiffrement et hash en PHP contre l'attaque Man in the middle
- Aedituus - Espace membre sécurisé en PHP5

Lithium : ORM ActiveRecord PHP5 extrêmement léger
wamania est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2006, 13h57   #5
Membre habitué
 
Inscription : mai 2004
Messages : 499
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 499
Points : 149
Points : 149
Mon cookie me semble valable, car je l'ai testé de la manière suivante :

Code :
1
2
 
$_SESSION['erreur'] = "Vous êtes à présent connecté. Vous pouvez enchérir ou ajouter un commentaire et la clé est " . $_COOKIE['cleUtilisateur'];
Apparaissait alors bien sur ma page "identification.php" le texte "Vous êtes à présent connecté. Vous pouvez enchérir ou ajouter un commentaire et la clé est numéro_de_clé"
dubitoph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2006, 14h03   #6
Rédacteur
 
Avatar de wamania
 
Développeur Web
Inscription : juillet 2003
Messages : 676
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2003
Messages : 676
Points : 678
Points : 678
effectivement
Dans firefox, as-tu regarder si le cookie était encore physiquement la?
outils->option->cookie->afficher les cookies
__________________
Articles sur developpez.com
- Gestion des exceptions avec PHP5
- Chiffrement et hash en PHP contre l'attaque Man in the middle
- Aedituus - Espace membre sécurisé en PHP5

Lithium : ORM ActiveRecord PHP5 extrêmement léger
wamania est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2006, 14h32   #7
Membre chevronné
 
Avatar de kankrelune
 
Inscription : décembre 2005
Messages : 766
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 766
Points : 745
Points : 745
Code :
1
2
 
setcookie("cleUtilisateur", "");
Faudrait déja savoir comment les cookies fonctionnent... si tu ne leur donne pas de valuer et de durée de vie il sont imédiatement détruit... .. .

setCookie()

Citation:
Si l'argument value est une chaîne vide ou vaut FALSE et quelques autres arguments sont exactements les mêmes que lors du positionnement du cookie, alors le cookie sera effacé du client.
@ tchaOo°
kankrelune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2006, 15h31   #8
Membre habitué
 
Inscription : mai 2004
Messages : 499
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 499
Points : 149
Points : 149
J'avais déjà effectué le test en ajoutant une durée de vie au cookie, mais rien n'y changeait. Cette fois, je suis allé un peu plus loin en faisant :

Code :
1
2
3
4
 
setcookie("cleUtilisateur", "xxxx", (time() + 3600));
.....
$_COOKIE['cleUtilisateur'] = $row[0];
, mais cela ne change rien non plus.
dubitoph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2006, 16h22   #9
Membre habitué
 
Inscription : mai 2004
Messages : 499
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 499
Points : 149
Points : 149
Lorsque je teste l'existence de mon cookie sous ff, je ne le retrouve pas. La seule variable que je vois, c'est PHPSESSID.
dubitoph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 18h40   #10
Membre chevronné
 
Avatar de kankrelune
 
Inscription : décembre 2005
Messages : 766
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 766
Points : 745
Points : 745
Alors trois choses... .. .

-1- quand tu crée ton cookie avant de tester son existance tu recharge la page ou tu fais tout à la suite dans la même page... la création du cookie n'est prise en compte qu'au rechargement... .. .

-2- les cookie ne fonctionnent pas comme les session il faut écrire dedans et non pas incrémenter la variable $_COOKIE donc tu fais

Code :
1
2
 
setcookie("cleUtilisateur", $row[0], (time() + 3600));
-3- as tu regardé dans les options de firefox si le cookie existait comme wamania t'a dit... .. .

@ tchaOo°
kankrelune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2006, 16h05   #11
Membre du Club
 
Inscription : avril 2004
Messages : 145
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 145
Points : 55
Points : 55
Bonjour j'ai un peu le même problème.

Dans ma page connection, je fais :
Code :
1
2
 
setcookie ("invautologin", $_SESSION["smartlogin"]."#".$_SESSION["smartpwd"], time()+1728000);
dans la page suivante lorsque j'affiche phpinfo(32) j'ai:
Code :
1
2
3
4
5
 
HP_SELF 	/monsite/page.php
_REQUEST["PHPSESSID"]	1138acbf5d36f978b7b5037c2f5530fe
_COOKIE["PHPSESSID"]	1138acbf5d36f978b7b5037c2f5530fe
_SERVER["COMSPEC"]	...
mais pas de _COOKIE["invautologin"]. Pourtant il est bien visible sous FF dans les options.

Ok j'ai eut ma réponse: il faut ajouté si tu veux qu'il puisse être récupéré partout, il faut que tu spécifie "/" dans le path.

soit: setcookie ("invautologin", $_SESSION["smartlogin"]."#".$_SESSION["smartpwd"], time()+1728000,'/');

--------------------------------------------------------------------------


Par contre maintenant je n'arrive pas à le détruire. Dans une autre page je fais: setcookie ("invautologin", " ",time()-100,'/');

mais dans le phpinfo(32); il est tojours là idem dans les options de FF
antrax2013 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2006, 20h44   #12
Membre chevronné
 
Avatar de kankrelune
 
Inscription : décembre 2005
Messages : 766
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 766
Points : 745
Points : 745
Essaye... .. .

Code :
setcookie ('invautologin', '',(time()-3600),'/');
@ tchaOo°
kankrelune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2006, 12h18   #13
Membre du Club
 
Inscription : avril 2004
Messages : 145
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 145
Points : 55
Points : 55
Bon ça marche. Note il reste des "bout de cookie" en mémoire vive donc penser à faire un
Code :
unset($_COOKIE["ma_variable"]);
POUR MOI C'EST RESOLU !! Merci
antrax2013 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h18.


 
 
 
 
Partenaires

Hébergement Web