|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||||
|
Membre habitué
![]() Inscription : avril 2005 Messages : 272 ![]() |
[register_globals et session]
register_globals http://fr.php.net/manual/fr/security.globals.php Salutations chers Développeurs. J’ai rencontré un bug assai bizarre sur un site. ![]() Mon code qui marchait très bien jusqu'à maintenant ne marche plus. Mon code avant : Code :
Mon but est d’avoir un identifiant de sélection : $id_selection Je crée donc la variable $id_selection et je lui donne une valeur par défaut : false Ensuite je cherche une valeur pour ma variable. D’abord dans la session, puis dans les paramètres GET et enfin dans POST. Enfin je teste si ma variable est toujours égale (en type et en valeur ( = = = )) a false. Si c’est le cas c’est que je n’ai pas d’identifiant de sélection disponible et donc je quitte cette page. Sinon j’enregistre mon identifiant de sélection dans la session afin de pouvoir le récupérer au prochain appel à la page. Le premier appel à la page ce fait ainsi : ma_selection.php ?id_selection=666 L’identifiant est bien récupéré dans GET et enregistré en session. Les autres appels n’ont plus besoin de préciser la sélection. Ce code marché correctement sur le serveur avec register_globals = On et marche toujours en local. Puis le problème suivant est apparut. La création de la variable $id_selection = false ; est effectué correctement. Mais il n’est plus possible de le récupérer dans la session. (La première affectation par GET marche Et $_SESSION['id_selection'] a bien sa valeur en début de script !!) Comme si $id_selection refusait de changer de valeur !! ![]() ___________ J’ai dans un premier temps réglé le problème de la façon suivante Code :
J’ai discuté du problème avec mon administrateur serveur et il m’a orienté vers le register_globals (Qui été à On sur le serveur et a Off chez moi, en local) Et il se trouve que mettre register_globals = Off règle le problème. … Mais pourquoi ? Il ne me semble pas que ma méthode de programmation initial ne soit pas compatible avec register_globals = On , Au contraire ! J’ai essayé de développer de tel façon que mon code soit réutilisable quelque soit la configuration de cette variable et de façon a éliminé tout comportement aléatoire du à une variable auto définit. Si quelqu’un peut éclairer ma lanterne. Merci d’avance et bon code @Tous.
__________________
Orthographe => Message Privé constructif svp |
||||
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Analyste - Programmeur Inscription : mai 2006 Messages : 712 ![]() |
si tu remplaces if($id_selection === false) par if(!$id_selection)
|
|
|
00
|
|
|
#3 | ||
|
Membre chevronné
![]() Inscription : novembre 2003 Messages : 737 ![]() |
Sinon plus simple...
Code :
|
||
|
00
|
|
|
#4 |
|
Membre habitué
![]() Inscription : avril 2005 Messages : 272 ![]() |
@|PaRa-BoL
La question n'est pas dans la 'simplicité' (traduite ici par de l'économie de charactaire) Mais dans le pb ça a marché, et pourquoi ça n'as plus marché. Et pi je sais pas ... pour moi, (et peut être que moi) je trouve ma syntaxe plus lisible. @J0r_x if(!$id_selection) Ne permet pas la comparaison de type. Mon identifiant de selection pourait étre 0 Mais en pratique, je suis d'accord : ce ne sera jamais le cas!
__________________
Orthographe => Message Privé constructif svp |
|
|
00
|
|
|
#5 |
|
Membre chevronné
![]() Inscription : novembre 2003 Messages : 737 ![]() |
Lisible pour toi peut etre mais c'est pas très propre.
Sinon tu peux toujours essayer de debuguer avec des echo pour voir si les conditions sont bien remplis et peut être essayer avec empty() au lieu de isset(). Et aussi reparer les erreures de logiques... Et aussi pourquoi initialise tu ta variable à false et ne verifis tu pas directement avec !isset() au lieu de verifier son intégrité initiale ?
__________________
http://www.ape-project.org/ |
|
00
|
|
|
#6 | ||||
|
Membre habitué
![]() Inscription : avril 2005 Messages : 272 ![]() |
Citation:
Et pis le problème est résolut grace au changement de register_global Citation:
Citation:
Citation:
J'ai donc hérité de certaines habitude qui même si elle ne sont pas indispensables en php ne sont 'normalement' pas nuisible (et plutôt bonnes selon moi). ------------------------ Mais c'est vrai que ce problème remet en cause toute ma vision de la chose
__________________
Orthographe => Message Privé constructif svp |
||||
|
|
00
|
|
|
#7 | ||
|
Membre habitué
![]() Inscription : avril 2005 Messages : 272 ![]() |
Code :
__________________
Orthographe => Message Privé constructif svp |
||
|
|
00
|
|
|
#8 | |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2006 Messages : 31 ![]() |
Citation:
C'est hautement recommandé niveau sécurité et la plupart des hébergeurs se doivent de le mettre à OFF. En effet, si tu travailles de cette façon, tu peux contrôler tout ce qui rentre et sort de tes pages web. Et même s'il est à ON cela fonctionnera à l'inverse de ta programmation qui compte sur le register globals ON!! Juste un conseil que je te donne
|
|
|
|
00
|
|
|
#9 | |
|
Membre habitué
![]() Inscription : avril 2005 Messages : 272 ![]() |
Citation:
![]() Mais je veux travailler avec register globals OFF !!! Donc j'ai tout fait pour que ça marche avec register globals ON ou OFF !! Et ce même si le serveur était sur ON ... Et ça marchait bien !!!!! Et pi un jour (comme ça sens rien ....) ça marche pu !!!! POURQUOI !!!!!!
__________________
Orthographe => Message Privé constructif svp |
|
|
|
00
|
|
|
#10 |
|
Membre chevronné
![]() Inscription : novembre 2003 Messages : 737 ![]() |
Mais on te la déjà dit !!!!!
Va lire la doc PHP sur register_global et tu comprendras mieux... c'est quand meme pas compliqué, je t'ai même filé le code qui marche...
__________________
http://www.ape-project.org/ |
|
00
|
|
|
#11 | ||
|
Membre Expert
![]() Inscription : février 2005 Messages : 1 797 ![]() |
Salut, ton code avec les echo c'est avec les global à on ou off ?
parce que ca : Code :
|
||
|
|
00
|
|
|
#12 |
|
Membre habitué
![]() Inscription : avril 2005 Messages : 272 ![]() |
ça veut dire que le fait de lire $_SESSION['id_selection'] créer un pointeur $id_selection vers $_SESSION['id_selection']
et que en faisant $id_selection = false; j'écrase $_SESSION['id_selection'] ????? Je crois que j'ai plus qu'a tout oublier du php et tout réaprendre......
__________________
Orthographe => Message Privé constructif svp |
|
|
00
|
|
|
#13 | |||
|
Membre habitué
![]() Inscription : avril 2005 Messages : 272 ![]() |
http://fr.php.net/manual/fr/security.globals.php
Citation:
j'initialise ma variable ensuite je lui affecte une valeur en massurant de ça provenance Code :
__________________
Orthographe => Message Privé constructif svp |
|||
|
|
00
|
|
|
#14 | ||
|
Membre régulier
![]() Inscription : janvier 2007 Messages : 85 ![]() |
Peut être vais-je dire une grosse connerie, mais j'avais le même gende de problème que j'ai résolu en faisant un
voila mon code : Code :
@++ |
||
|
|
00
|
|
|
#15 |
|
Membre habitué
![]() Inscription : avril 2005 Messages : 272 ![]() |
En effet c'est bizzard
__________________
Orthographe => Message Privé constructif svp |
|
|
00
|
|
|
#16 |
|
Membre régulier
![]() Inscription : janvier 2007 Messages : 85 ![]() |
as tu essayé de faire un extract() sur tes variables globales de type POST et GET ?
ça donne quoi ? @++ |
|
|
00
|
|
|
#17 | |
|
Membre chevronné
![]() Inscription : novembre 2003 Messages : 737 ![]() |
Citation:
__________________
http://www.ape-project.org/ |
|
|
00
|
|
|
#18 |
|
Membre régulier
![]() Inscription : janvier 2007 Messages : 85 ![]() |
Désolé, je voulais juste faire avancer le smilblick
à l'avenir, je m'abstiendrais .... mais, autant que je me couche moins c.. ce soir, en quoi utiliser extract() est une mauvaise habitude ? @++ |
|
|
00
|
|
|
#19 |
|
Membre chevronné
![]() Inscription : novembre 2003 Messages : 737 ![]() |
un $_POST est un $_POST et une variable normal est une variable normal, sinon autant mettre le register_global à on
__________________
http://www.ape-project.org/ |
|
00
|
|
|
#20 | ||||
|
Membre régulier
![]() Inscription : janvier 2007 Messages : 85 ![]() |
Merci pour ta réponse :
est ce que tu essaye de me dire qu'il faut laisser la variable $_POST['lot'] telle qu'elle ? et donc ce code : Code :
Code :
|
||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com