2009-10-27 5 views
2

quand je stocke les données dans une variable comme:PHP session change variables quand je les référencent

// inside the login page 
$_SESSION['username'] = $username; 
$_SESSION['user_id'] = $user_id; 

et i référence à cette séance sur une autre page comme:

// on the users homepage 
$new_variable = $_SESSION['username']; 

change sa valeur à quelque chose de différent de la base de données.

ou par exemple, si je fais une nouvelle variable appelée $ user_id

// creating a new variable in the users inbox 
$user_id = 12312; 

il change la valeur de session aussi.


Est-ce que quelqu'un sait où je vais mal?

Merci!

Répondre

5

Sons comme register_globals est activé. Cela signifie que les variables $ _SESSION et globales fonctionneront effectivement comme la même chose. Vous devez définir register_globals sur Off si vous contrôlez l'hébergement, et si ce n'est pas le cas, demandez à l'hôte. Enfin, vous devriez probablement déplacer l'hébergement, car il est très peu sûr et difficile à programmer en toute sécurité.

Vous pouvez illustrer ce problème avec d'autres tableaux globaux, y compris $ _GET.

Voir http://php.net/manual/en/security.globals.php pour plus de détails

+0

Merci. Je dois envoyer un courriel à mon hôte. Dans un contrat avec eux atm, besoin de changer clairement dès que possible. – Stephen

+0

Bonne chance - il y a beaucoup d'hôtes bon marché là-bas sinon. Demandez à voir un phpinfo avant de vous inscrire! –

+0

De plus, si vous avez accès à l'aide de fichiers htaccess, il est possible que "php_flag register_globals off" fonctionne pour vous. – Littlejon

3

Désactiver register_globals dans le php.ini

+1

Cela n'a pas de sens (en anglais au moins) et n'est pas vraiment une réponse. Stack Overflow ne se limite pas aux courses de rep! –

+0

Fixe, désolé, je suis brésilien et j'ai écrit en pensant au portugais! – Cesar

Questions connexes