Variable de session modifiée sans raison

cs_Tibabou Messages postés 129 Date d'inscription mercredi 2 janvier 2002 Statut Membre Dernière intervention 7 juillet 2012 - 26 avril 2009 à 19:02
eilijah Messages postés 1 Date d'inscription samedi 12 septembre 2009 Statut Membre Dernière intervention 12 novembre 2009 - 12 nov. 2009 à 05:23
Bonjour,

Je rencontre un problème incompréhensible sur les sessions PHP.
Une de mes variables est modifiée au cours de l'exécution d'un script alors que je n'y accède ni en lecture ni en écriture.

Voici le scénario :
1. Connexion au site (enregistrement de la variable $_SESSION['id'] = 123)
2. Déconnexion du site (session_destroy();)
3. Connexion au site avec un autre identifiant ($_SESSION['id'] = 789)
4. Exécution du script suivant :

session_start();
echo "ID : ".$_SESSION['id']."
";
/*
* Traitements divers en base de données sans aucun appel à $_SESSION
*/
echo "ID : ".$_SESSION['id']."
";

5. Le script affiche :

ID : 789
ID : 123

Comment cette variable peut-elle être modifiée "toute seule" ?
On se retrouve "connecté" avec le compte d'un autre utilisateur, c'est très embêtant...

Merci d'avance pour votre aide.

Tibabou

2 réponses

cs_Tibabou Messages postés 129 Date d'inscription mercredi 2 janvier 2002 Statut Membre Dernière intervention 7 juillet 2012
26 avril 2009 à 19:28
J'ai identifié la cause du problème, je l'ai contourné, mais je cherche toujours l'explication.

J'utilise une variable '$id' (donc ayant le même "nom" que dans $_SESSION['id']).
Dès la modification de $id, la variable de session change en même temps.
Je précise qu'à aucun moment je ne fais de : $id = $_SESSION['id'].

Si je renomme $id en $bizarre, ça fonctionne.

Quelqu'un a une explication ?

Tibabou
0
eilijah Messages postés 1 Date d'inscription samedi 12 septembre 2009 Statut Membre Dernière intervention 12 novembre 2009
12 nov. 2009 à 05:23
Salut,

j'ai eut le meme probleme, en fait cela venait pour moi du fait que register_globals etait configuré sur "on". Donc pour eviter ce probleme et d'autre lié a register_globals, tu peux mettre un .htaccess avec :
php_flag register_globals off
0
Rejoignez-nous