Une variable de session qui change toute seule ! Je m'arrache les chvx

Une variable de session qui change toute seule ! Je m'arrache les chvx - PHP - Programmation

Marsh Posté le 13-01-2005 à 11:55:46    

J'éspère que quelqu'un va pouvoir m'aider, car là je ne comprends rien du tout !
 
Tout d'abord voici le code. Je l'ai allegé à l'extrême pour plus de clareté :
 


$_SESSION['mail_dest'] = "aaa;bbb";
$_SESSION['titre'] = "aaa;bbb";
print_r($_SESSION);
echo '<br/>';
echo $mail = str_replace(';',"\r\n",$_SESSION['mail_dest']);
echo '<br/>';
echo $titre = str_replace(';',"\r\n",$_SESSION['titre']);
echo '<br/>';
print_r($_SESSION);


 
Et voici le resultat :


Array ( [mail_dest] => aaa;bbb [titre] => aaa;bbb )  
aaa bbb
aaa bbb
Array ( [mail_dest] => aaa;bbb [titre] => aaa bbb )


 
Comme vous pouvez le voir, le ";" a disparu de la variable de session "titre" dans le 2ème affichage ...
 
Je ne comprend pas pourquoi :(
 
Merci

Reply

Marsh Posté le 13-01-2005 à 11:55:46   

Reply

Marsh Posté le 13-01-2005 à 12:01:51    

Ben si tu fais un str_replace de ';' par '\r\n' c normal hein ^^


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 13-01-2005 à 12:02:07    

Tu devrais plutot te demander pourquoi il a pas disparu dans mail_dest


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 13-01-2005 à 12:03:25    

Oui voila ca c'est bizarre ^^
 
Edit: je dois etre pas bien réveillé encore mais la réponse est simple.
 
Tu fais $titre = machin, mais $titre c'est ta variable de session ! Donc c'est normal que ca change ^^
 
Et si ca change pas pour mail_dest, c'est paske tu fais $mail = machin, et pas $mail_dest ...
 
M'enfin ca arrive ^^
 
rah et je suis vraiment crevé moi ... :pt1cable:


Message édité par plainsofpain le 13-01-2005 à 12:06:22

---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 13-01-2005 à 14:45:18    

esox_ch a écrit :

Tu devrais plutot te demander pourquoi il a pas disparu dans mail_dest

Il n'y a pas de raison : str_replace ne change pas la chaine d'origine.

Reply

Marsh Posté le 13-01-2005 à 14:47:24    

Dj YeLL a écrit :

J'éspère que quelqu'un va pouvoir m'aider, car là je ne comprends rien du tout !
 
Tout d'abord voici le code. Je l'ai allegé à l'extrême pour plus de clareté :
 


$_SESSION['mail_dest'] = "aaa;bbb";
$_SESSION['titre'] = "aaa;bbb";
print_r($_SESSION);
echo '<br/>';
echo $mail = str_replace(';',"\r\n",$_SESSION['mail_dest']);
echo '<br/>';
echo $titre = str_replace(';',"\r\n",$_SESSION['titre']);
echo '<br/>';
print_r($_SESSION);


 
Et voici le resultat :


Array ( [mail_dest] => aaa;bbb [titre] => aaa;bbb )  
aaa bbb
aaa bbb
Array ( [mail_dest] => aaa;bbb [titre] => aaa bbb )


 
Comme vous pouvez le voir, le ";" a disparu de la variable de session "titre" dans le 2ème affichage ...
 
Je ne comprend pas pourquoi :(
 
Merci


C'est parce que tu dois être configuré en Register_globals à On.
Passe le à Off (si tu peux) car ça fait un bout de temps (au moins 2 ans) que c'est à Off par défaut pour des raisons de sécurité.

Reply

Marsh Posté le 13-01-2005 à 14:49:11    

Dj YeLL a écrit :

J'éspère que quelqu'un va pouvoir m'aider, car là je ne comprends rien du tout !
 
Tout d'abord voici le code. Je l'ai allegé à l'extrême pour plus de clareté :
 


$_SESSION['mail_dest'] = "aaa;bbb";
$_SESSION['titre'] = "aaa;bbb";
print_r($_SESSION);
echo '<br/>';
echo $mail = str_replace(';',"\r\n",$_SESSION['mail_dest']);
echo '<br/>';
echo $titre = str_replace(';',"\r\n",$_SESSION['titre']);
echo '<br/>';
print_r($_SESSION);


 
Et voici le resultat :


Array ( [mail_dest] => aaa;bbb [titre] => aaa;bbb )  
aaa bbb
aaa bbb
Array ( [mail_dest] => aaa;bbb [titre] => aaa bbb )


 
Comme vous pouvez le voir, le ";" a disparu de la variable de session "titre" dans le 2ème affichage ...
 
Je ne comprend pas pourquoi :(
 
Merci


 
Ton PHP a très certainement register_globals à on, et du coup $titre correspond à exactement la même variable que $_SESSION['titre'].
 
A partir de là, tu dois comprendre ce qui cloche. ;)
 
Edit: bon ben on va dire que je confirme. :d


Message édité par sielfried le 13-01-2005 à 14:50:22

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 13-01-2005 à 15:27:37    

Ok merci à tous, bon ben je vais me demerder autrement, alors.
 
Ca doit surement etre ça, vu que le serveur se fait vieux et qu'il est rarement mis à jour. Mais vu qu'il y a une appli importante qui tourne dessus, qui ne m'appartient pas, je vais eviter de changer ça, des fois que je fouterais le truc en l'air :/
 
Encore merci en tout cas.
 
++

Reply

Marsh Posté le 13-01-2005 à 16:56:22    

Tu peux le changer localement pour ton appli :

Code :
  1. ini_set('register_globals', '0');


 
Sauf si la fonction ini_set a été désactivée sur le serveur.

Reply

Marsh Posté le 13-01-2005 à 18:44:45    

ah mais non renomme juste $titre en autre chose.
 
/me a l'impression que son post est passé inapercu ...


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 13-01-2005 à 18:44:45   

Reply

Marsh Posté le 13-01-2005 à 18:55:44    

plainsofpain a écrit :

ah mais non renomme juste $titre en autre chose.
 
/me a l'impression que son post est passé inapercu ...


 
 
Non non, ton post n'est pas passé inaperçu lol C'est bien ce que j'ai fais, j'ai simplement renommé la variable $titre :)
 
Encore merci.
 
Ratibus> En effet, je n'ai pas pensé à utiliser ini_set()... surtout que je l'ai utilisé dans ce même script mais pour autre chose :D
 
Merci à tous
 
++


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 14-01-2005 à 19:36:56    

ouf j'ai eu peur que tu te lances dans un autre moyen alors que c'était un peu bête ^^
 
Quand tu bosses avec les sessions, fais attention aux noms des variable dedans, on a tendance a les oublier, et à nommer d'autres variable avec le meme nom  :whistle:


---------------
http://www.alsacreations.com , http://www.openweb.eu.org. Mon CV : http://cv.roane-irkana.net/. Exemple à ne surtout pas suivre : www.worldinternet.be
Reply

Marsh Posté le 14-01-2005 à 20:13:03    

suffit d'avoir qques règles et c'est bon:
- mes variables d'un formulaire se nomment $F_nomvariable
- mes variables de session se nomment $S_nomvariable
...etc...


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 14-01-2005 à 21:10:41    

Personnellement je passe par une classe (que j'ai faite) qui gere les sessions.
Les variables de sessions se trouvent dans un objet $session.
Il y a un tableau $session->data qui contient toutes les vars de session. Comme ca c'est facile, de plus il suffit d'ajouter une "valeur" au tableau pour que ca soit automatiquement sauve dans la session.
 
De plus cette methode me permet de faire un petit
"print_r($session->data)" pour voir qu'est-ce qu'il y a de stocke dedans.
(Bon ok, on peut aussi le faire en passant par $_SESSION ... :p)


Message édité par cerel le 14-01-2005 à 21:11:53
Reply

Marsh Posté le 14-01-2005 à 21:25:33    

merci pour toutes ces recommandations :)


---------------
Gamertag: CoteBlack YeLL
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed