IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

collision entre variable normale et session ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 98
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sessionMsg = isset($_SESSION['msg']) ? $_SESSION['msg']: "";
     
    if ( isset($_SESSION['msg']) ) echo $sessionMsg ;
    résultat :
    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 !

    à+

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    La directive register_globals ne serait-elle pas sur On (voir phpinfo ou php.ini) ?


    Julp.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 98
    Par défaut
    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

  4. #4
    Membre émérite Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Par défaut
    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.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 98
    Par défaut
    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.



    à+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/06/2008, 11h40
  2. [Sécurité] Variables dans une session
    Par philippef dans le forum Langage
    Réponses: 6
    Dernier message: 14/10/2005, 16h30
  3. JSP stocker des variables javascript en session
    Par MASSAKA dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/08/2005, 16h17
  4. GLScene et les collisions entre les objets
    Par HopeLeaves dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 13/06/2005, 19h45
  5. Réponses: 4
    Dernier message: 25/09/2004, 09h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo