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 12/11/2006, 16h40   #1
Membre du Club
 
Inscription : juin 2003
Messages : 83
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 83
Points : 47
Points : 47
Par défaut collision entre variable normale et session ?

Salut,

j'ai besoin d'une confirmation.
Je viens de découvrir (au bout de 3 ans faut le faire !) qu'il y a collision entre variable normale et session si elles portent le même nom :

exemple :

Page X :
Page Y :
Code :
1
2
3
$sessionMsg = isset($_SESSION['msg']) ? $_SESSION['msg']: "";
 
if ( isset($_SESSION['msg']) ) echo $sessionMsg ;
résultat :
Citation:
toto
$msg est considéré comme l'identique de la variable $_SESSION['msg'].

Je ne m'en étais jamais rendu compte car je ne fais jamais comme ça.
Pour gagner du temps, j'ai bidouillé un truc et voilà le bug.

Est-ce j'ai bien compris ou est-ce une autre astuce qui m'échappe ?

merci pour votre éclairage !

à+
kileak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2006, 18h40   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
La directive register_globals ne serait-elle pas sur On (voir phpinfo ou php.ini) ?


Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2006, 21h03   #3
Membre du Club
 
Inscription : juin 2003
Messages : 83
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 83
Points : 47
Points : 47
Citation:
Envoyé par julp
La directive register_globals ne serait-elle pas sur On (voir phpinfo ou php.ini) ?


Julp.
Sur mon OVH Mutualisé, oui effectivement !
Je savais que c'était un paramétrage de ce genre mais lequel...

beaucoup
kileak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2006, 10h58   #4
Membre émérite
 
Avatar de alain31tl
 
Alain
Inscription : novembre 2005
Messages : 897
Détails du profil
Informations personnelles :
Nom : Alain
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2005
Messages : 897
Points : 910
Points : 910
Salut

Une variable session (php) demeure tant que le navigateur n'est pas fermé.
Si elle doit être remplaçée par une autre et en cours d'application, elle doit être détruite auparavant.
Par conséquent, il convient de bien distinguer les variables enregistrées en session, et celles (normales) qui sont traitées ou circulent dans l'application en leur donnant des noms différents.
Celà peut générer effectivement des bug de traitement .... j'ai aussi vécu l'expérience sur une application complexe.

Je vais te donner un simple exemple:

Un utilisateur se connecte, s'indentifie sous le nom de "Martin", ceci déclenche une session où sera enregistré le nom comme étant Martin.

Dans ton application, tu as par exemple un formulaire qui te permet d'envoyer un message à une autre personne.
Tu sélectionnes un autre nom (Dupond) dans un select et tu valides.
Ton script d'injection attribuera ce message à Martin, et non pas Dupond.
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.
alain31tl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2006, 17h31   #5
Membre du Club
 
Inscription : juin 2003
Messages : 83
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 83
Points : 47
Points : 47
Citation:
Envoyé par alain31tl
Salut

Une variable session (php) demeure tant que le navigateur n'est pas fermé.
Si elle doit être remplaçée par une autre et en cours d'application, elle doit être détruite auparavant.
Par conséquent, il convient de bien distinguer les variables enregistrées en session, et celles (normales) qui sont traitées ou circulent dans l'application en leur donnant des noms différents.
Celà peut générer effectivement des bug de traitement .... j'ai aussi vécu l'expérience sur une application complexe.

Je vais te donner un simple exemple:

Un utilisateur se connecte, s'indentifie sous le nom de "Martin", ceci déclenche une session où sera enregistré le nom comme étant Martin.

Dans ton application, tu as par exemple un formulaire qui te permet d'envoyer un message à une autre personne.
Tu sélectionnes un autre nom (Dupond) dans un select et tu valides.
Ton script d'injection attribuera ce message à Martin, et non pas Dupond.
Merci. En fait, j'ai très bien compris le principe des sessions mais c'était plus un prob de syntaxe. Dans mon esprit $msg et $_SESSION['msg'] étaient deux variables différentes.
Et bien non, pas si register_globals est à ON !
Dans ce cas, c'est kif kif et c'est là que je me suis fait piéger.



à+
kileak 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 15h14.


 
 
 
 
Partenaires

Hébergement Web