John_attend Posté 26 Août 2006 Posté 26 Août 2006 Bonjour, J'expose mon problème : afin de créer un sript qui soit compatbile et qui s'adapte selon la configuration du serveur, j'ai créé ce script (à placer en premier) au cas ou l'option register globals serait à ON (je veux qu'elle soit à OFF). <?phpforeach($_REQUEST as $key => $val) { ${$key} = NULL;}?> Ceci afin de supprimer les variable $var pour une $_REQUEST['var'] donnée. Toutefois, je me pose une petite question à propos des register_globals. Celles ci ont un ordre de priorité... En effet, quand celles si sont à ON, si on envoit une variable par POST qui se nomme var et une variable par GET qui se nomme var également, il ne pourra pas y avoir deux $var générée, l'un des supergoblals aura la priorité sur l'autre. Il en est de même pour $_REQUEST... Mais ma question est la suivante : L'ordre de priorité pour les registers_blogals est il le même que pour $_REQUEST ? Car si oui, mon script serait bon, sinon il faudrait que je fasse de même pour chaque Superglobals... Merci d'avance de vos réponses.
Jeromnimo Posté 27 Août 2006 Posté 27 Août 2006 Si j'ai bien compris ta question, ce lien devrait répondre à ta question. A priori, l'ordre dans lequel les variables globales sont parcourues est parametrable : http://fr.php.net/manual/fr/ini.core.php#ini.variables-order Bon courage ;-)
Anonymus Posté 27 Août 2006 Posté 27 Août 2006 Ton idée serait que les variables passées en REQUEST (par exemple en GET) soient effacées lorsqu'elles sont passées par l'url. C'est une bonne idée, sauf que.. tu ne sais pas vraiment ce qui est passé par l'url. L'utilisateur pourrait rentrer une variable que tu utilises dans ton script, et celle-ci serait effacée sans discernement :/ Pour infos, si tu veux controler la position d'un register_globals, tu as accès à ini_set, ainsi : ini_set('register_globals', 0); Anonymus.
John_attend Posté 27 Août 2006 Auteur Posté 27 Août 2006 (modifié) Jeromnimo > Merci. Je vois que l'ordre est EGPCS pour $_REQUEST et apparemment en regardant un peu plus bas c'est le même ordre pour register_globals. Je ferais des tests plus profondémment pour m'en assurer. Ton idée serait que les variables passées en REQUEST (par exemple en GET) soient effacées lorsqu'elles sont passées par l'url. C'est une bonne idée, sauf que.. tu ne sais pas vraiment ce qui est passé par l'url. L'utilisateur pourrait rentrer une variable que tu utilises dans ton script, et celle-ci serait effacée sans discernement :/ Ce n'est pas vraiment ça en fait, je supprime toutes les $var pour une $_REQUEST[var] donnée, le tableau $_REQUEST lui reste intact. Sinon j'aurais tout simplement fait $_GET = $_POST = $_COOKIE = $_ENV = $_SERVER = NULL; ini_set('register_globals', 0); Malheureusement ce serait trop simple... En modifiant les paramètres de register_globals à l'interieur du script il est déjà trop tard car une fois que l'execution commence toutes les variables sont déjà définies... C'est pour ça que je me vois obligé de trouver une autre méthode :-\ Modifié 27 Août 2006 par John_attend
Anonymus Posté 27 Août 2006 Posté 27 Août 2006 , je supprime toutes les $var pour une $_REQUEST[var] donnée, le tableau $_REQUEST lui reste intact. Je ne suis pas sûr de comprendre :/ Si tu ne te sers pas de $var, tu n'as pas besoin de l'effacer !? Mon idée, par rapport à cela (et ce que j'en ai compris, mais.. je n'en suis déjà pas trop sûr : ) Dans le cas d'un formulaire d'inscription. Tu dois recevoir les infos par POST (enfin. normalement). Là, tu effaces $login et $pass, pour te servir de $REQUEST['login'] et $REQUEST['pass']. Mais si tu ne te sers pas de $login et $pass, ca ne sert à rien de les effacer ? ( m'enfin bon.. laisses tomber, c'est dimanche soir, j'suis fatigué )
John_attend Posté 28 Août 2006 Auteur Posté 28 Août 2006 (modifié) Oui c'est ça, mais je me complique pas trop à définir chaque variable... En fait le script sert à faire comme si REGISTER_GLOBALS était à OFF (alors qu'en fait il est à ON). En fait la méthode que tu me conseille c'est surement l'initialisation ? Mais je préfère ne pas trop me prendre la tête à initialiser chaque variable (un oubli est si vite arrivé). Modifié 28 Août 2006 par John_attend
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant