$messager = $_SESSION['messager'] ?

Mammouth du PHP | 693 Messages

28 juin 2007, 11:59

Bonjour, je suis hébergé chez free, et je viens de trouver un bug dans mon script... En effet, j'ai un variable de session $_SESSION['messager'] et j'utilise dans une page une variable $messager et je me suis rendu compte que celle ci ecrasait ma variable de session. Comment est ce possible ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 juin 2007, 12:06

Ce n'est pas un bug à priori, mais un conflit du fait que la directive register_global soit à on chez free... du coup les modifications effectuées sur la variable $messager sont également prises en compte pour $_SESSION['messager'] :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 juin 2007, 12:06

si le register_global est activé, et il me semble qu'il l'est sur free, toutes variables de $_SESSION est initialisée comme variable locale.

En clair, ça signifie que si tu as $_SESSION['foo'], la variable $foo est automatiquement initialisée avec le contenu de $_SESSION['foo']
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 693 Messages

28 juin 2007, 12:13

Et l'inverse est vrai ?

Car moi, c'est lors de l'initialisation de $messager que la variable $_session['messager'] est réécrite (en, même pas puis qu'elle est simplement ecrasé...)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 juin 2007, 12:27

Et l'inverse est vrai. C'est pas seulement une initialisation, c'est une correlation entre les deux variables qui pointent je pense vers la même valeur... En gros si elles ne sont pas liées (et ca n'a donc pas l'air d'être le cas :)), tu n'as plus qu'à en renommer une des deux :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 693 Messages

28 juin 2007, 12:37

C'est ce que j'ai fait.

En tout cas, cet épisode m'a enlevé tout envie d'utiliser register_globals, mais bon,n j'ai aps le choix...

Sinon, une autre question. Est ce que $_POST['bidul'] ecrase $_SESSION['bidul'] ?