Version complète: sur le forum Webmaster Hub : A propos de la configuration
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
John_attend
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).

CODE
<?php

foreach($_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
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
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 :
CITATION
ini_set('register_globals', 0);


Anonymus.
John_attend
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.

CITATION(Anonymus)
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;

CITATION
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 :-\
Anonymus
CITATION
, 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é biggrin.gif )
John_attend
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é).
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.