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/05/2006, 17h00   #1
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Par défaut Une variable de session disparait en cours de route. Mais où est-elle ?

Bonjour,

Je viens de me rendre compte d'un problème extra-ordinaire :
A l'identification du membre, je récupère son pseudo depuis ses informations de connexion (mail et passe), au moyen d'une requête sql.
Je passe donc le pseudo en session, comme suit :
Code :
1
2
3
4
5
6
7
8
9
 
$affiche="SELECT pseudo FROM membre WHERE email='".$email."' AND motDePasse='".$passe."' AND valide='1'  ";
$resultat = mysql_query("$affiche");
while (
$R = mysql_fetch_array($resultat)) 
{
$_SESSION['pseudo']=$R[pseudo];
;}
mysql_free_result($resultat);
Juste en dessous dans le script, j'ai une ligne qui affiche :
Code :
1
2
 
echo "Bienvenue $_SESSION[pseudo]";
Jusque là tout va bien.

Mais si je quitte la page et que j'y reviens, la variable $_SESSION['pseudo'] a disparu.
Pourtant après avoir créer cette variable, j'en crée d'autres et elles elles sont toujours disponible dans le reste du site, y compris dans la page en question.

Comment cela ce puisse-t'il être ?

ça c'est le script complet (épuré quand même), si vous êtes patient :

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
25
26
27
28
29
30
31
32
33
 
if(!isset($_SESSION['pseudo']))
{
Citation:
<?php //on va aller chercher dans la table le pseudo pour les placer en session et l'urlSite pour l'insérer directement dans la table commentaire ou réponse $affiche="SELECT id, pseudo FROM membre WHERE email='".$email."' AND motDePasse='".$passe."' "; $resultat = mysql_query("$affiche"); while ( $R = mysql_fetch_array($resultat)) { $_SESSION['pseudo']=$R[pseudo]; //id sert à savoir où updater le numéro de membre provisoirement créé ci-dessous, pour le temps de la session ($numeroConnexion) $id=$R[id] ;} mysql_free_result($resultat); //ici ce sont des variables qui font offices d'id de session : elles sont bien transmises partout. $_SESSION['numeroConnexion']=$numeroConnexion; $_SESSION['numeroConnexionVariable']=$numeroConnexionVariable; ;}//ferme if(!isset($_SESSION[id]) echo "Bienvenue $_SESSION[pseudo]"; ?>
Colorez votre code PHP sur les forums grâce à Developpez.com?>
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2006, 17h02   #2
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Juste après le script, je fais ça, pour vérifier :

Code :
1
2
3
4
5
echo $_SESSION['numeroConnexion'];
echo"<br>";
echo $_SESSION['numeroConnexionVariable'];
echo'<br>';
echo $_SESSION['pseudo'];
Je quitte la page, j'y reviens, et les deux premières variables s'affichent, mais la troisième a disparu
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2006, 17h23   #3
Membre expérimenté
 
Avatar de dj-julio
 
Inscription : décembre 2005
Messages : 742
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Finistère (Bretagne)

Informations forums :
Inscription : décembre 2005
Messages : 742
Points : 576
Points : 576
je crois que tu récupère mal la valeur du pseudo dans la base de données :

Code :
$_SESSION['pseudo']=$R[pseudo];
devrait-être :
Code :
$_SESSION['pseudo']=$R['pseudo'];
__________________
Mon Site/Cv.
dj-julio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2006, 17h49   #4
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Salut Dj-julio

Je ne crois pas que ça vienne de là, sans quoi le nom de la variable ne s'afficherait même pas lors du echo "bienvenue $_SESSION[pseudo]".

J'ai pensé à cela :
Quand je change de page, j'arrive sur une page de définition. Cette page génère une requête sql.
Un des champs généré s'appelle justement pseudo et je fais alors, dans la boucle while:
$pseudo=$R[pseudo];

Ce pourrait-il que la création de cette variable annule la valeur de la variable de session $_SESSION['pseudo'] ?
(manque de pot à cet instant je ne peux pas tester, l'hébergement qui me sert à faire mes tests en ligne semble refuser les connexions ftp )
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2006, 18h55   #5
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Bon bah voilà c'était ça,

J'avais une page qui récupérait des messages.
Chaque message comporte un pseudo récupéré ainsi dans la boucle while de la requete :
$pseudo=$ResultatRequete[pseudo]

Du même coup la variable de session $_SESSION['pseudo'] voyait sa valeur modifié.

Comment cela se fait ? Je pensais qu'une variable de session était différent d'une variable normal, en fait c'est la meme chose mais mise en session, ç'est ça ?
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h20.


 
 
 
 
Partenaires

Hébergement Web