xtremsoft Posté(e) le 5 août 2005 Partager Posté(e) le 5 août 2005 Bonjour tout le monde, Les programmeurs php se souviennent : Avant, avec les anciennes versions de PHP, il suffisait de faire une page avec dedans <? echo $toto ?> . Vous me suivez jusque-là. La variable $toto n'était définit à nulle part, la page affichera qqch si on tappe dans notre navigateur préféré (firefox) mapage.php?toto=211223 Jusque là tout va bien. En pouvait faire la même chose en en créant un formulaire sur une autre page avec comme action notre fameuse page avec la méthode post, si on avait un champ texte, la page affichera sa valeur. Bref... Tout cela est bien beau. si maintenant on refait les mêmes expériances avec le php nouveau ça ne fonctionnera plus.... Pourquoi avoir changé qqch qui marchait au poil? J'ai trouvé une solution pour y remédier dites moi ce que vous en pensez: Je parle de ça foreach($_POST as $var=>$value) $$var=$value; //Fait $NoCode=sdksjskd; Ce petit bout de code prends le tableau posté, essayez print_r($_POST) et vous optiendrez un truc du style: Array ( [formName] => AddComputer [backurl] => index.php [id] => 19 [NoCode!] => dfsdf [Nom!] => dddd [ipAddress] => asdsda [MacAddress] => dasasddsadsasda [NoSerieManuf] => asddass [FactureNo] => daasd [PurchaseDate] => 2005-05-10 [ModelId] => 8 [CptTypeId] => 2 [inUseId] => 1 [userId] => 2 [RoomId] => 3 [ManufacturerId] => 0 [ProviderId] => 1 [Notes] => lasddas [send] => Update ) Le foreach dont je parle prends tous les noms de variable entre crochets, en crée avec ce nom et les défini. exemple $formName = AddComputer. Et Tout ça est 100% automatique Ma question est : Je recrée ce que php a supprimé dans ses nouvelles versions, suis-je en train de réactiver une faille? Lien vers le commentaire Partager sur d’autres sites More sharing options...
ingeni Posté(e) le 5 août 2005 Partager Posté(e) le 5 août 2005 Déjà, appeler une variable non initialisée est crade... De plus, je vois pas pourquoi recréer un tableau ou des variables par rapport à $_POST... Et je ne pense pas que tu réactives une failles... La manière la plus simple (et la plus propre à mon avis) lors de la récupération de donées via formulaires ou url est de controler l'existence l'existence de la donnée: si ton url est mapage.php?toto=211223 alors tu fais un truc comme ça: if (isset($_GET['toto']) { //traitement bon } else { //traitement erreur } Voilou Lien vers le commentaire Partager sur d’autres sites More sharing options...
xtremsoft Posté(e) le 5 août 2005 Auteur Partager Posté(e) le 5 août 2005 Ouais, ça je connais if(isset(...)) => En fait j'ai toujours utilisé ça, mais là le prob c'est que je dois écrire une application de gestion en php basée sur 25 tables avec au moins 20 formulaire allant de 1 à 20 champs, faire la petite boucle foreach me dispense de faire if(isset(...)) J'pense qu'en tout je gagne dans les 500 lignes à faire un truc crade. Moi soucis le plus gros c'est la faille de sécurité. Lien vers le commentaire Partager sur d’autres sites More sharing options...
volk Posté(e) le 5 août 2005 Partager Posté(e) le 5 août 2005 L'initialisation automatique des variables dont tu partle, dépend du flag register_globals, présent dans php.ini, avant il était par défaut à ON, maintenant il est par défaut à OFF. Ceci, comme tu l'a pressentit, en bonne partie pour des raisons de sécurité. Il y a un cas d'école sur php.net qui illustre parfaitement les éventuels problèmes de sécurité : <?php // $authorized = true uniquement si l'utilisateur est identifié if (authenticated_user()) { $authorized = true; } // Comme nous n'avons pas initialisé $authorized avec false, cette dernière // peut être définie via register_globals, comme avec l'URL GET auth.php?authorized=1 // Tout le monde peut facilement être reconnu comme identifié! if ($authorized) { include "/donnees/critiques/data.php"; } ?> Bien évidemment on trouvera rarement (du moins j'espère), un truc aussi évident dans la réalité, mais c'est juste pour donner l'idée... Donc tu peut réactiver ce flag, mais il faut que tu soit sure de la manière dont sont codés tes scripts ...à tes risques et périls... Lien vers le commentaire Partager sur d’autres sites More sharing options...
miouge Posté(e) le 7 août 2005 Partager Posté(e) le 7 août 2005 Celui qui à écrit le titre il à fumé ou quoi ? :8 Ton problème viens tout betement que PHP évolu... mais pas les tutos... ni les scripts... ni les develloppeurs.... Lien vers le commentaire Partager sur d’autres sites More sharing options...
xtremsoft Posté(e) le 8 août 2005 Auteur Partager Posté(e) le 8 août 2005 PHP évolue, les cripts devraient évoluer et les programmeurs doivent évoluer. t'as fumé ou quoi de dire que les programmeurs n'évoluaient pas? Mais bon, tu parles peut-être des programmeurs du dimanche Lien vers le commentaire Partager sur d’autres sites More sharing options...
miouge Posté(e) le 8 août 2005 Partager Posté(e) le 8 août 2005 Ba si les scripts évoluent pas par exemple www.phpscripts-fr.net... et ba j'en conclu que le develloppeur qui à fait le script est soit un flémard... soit n'assume pas sa position sociale de develloppeur... (Humour)... Enfin bref... je vois pas enormement d'hebergeur en PHP 5 :( Lien vers le commentaire Partager sur d’autres sites More sharing options...
ingeni Posté(e) le 8 août 2005 Partager Posté(e) le 8 août 2005 y en a po mal... même Free y est passé... Ainsi qu'OVH... Lien vers le commentaire Partager sur d’autres sites More sharing options...
miouge Posté(e) le 8 août 2005 Partager Posté(e) le 8 août 2005 Oui mais la version la plus utilisé encore c'est PHP4... en quand je vois que le PHP3 ça existe encore.... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.