Lentreprenaute Posté 14 Octobre 2004 Posté 14 Octobre 2004 Bonjour le Hub, je dispose d'une appli ecrite en php qui ne supporte pas le mode off du register, je dispose d'un serveur dedié mais je ne veux pas passer le php.ini sur on, existe t'il un moyen simple pour forcer un repertoire d'un site sur mon serveur à passer sur on ?? merci de votre aide Florent
Raphael Posté 14 Octobre 2004 Posté 14 Octobre 2004 Normalement, il suffit de faire un .htaccess à la racine du sous domaine, avec : php_value register_globals 1
Lentreprenaute Posté 14 Octobre 2004 Auteur Posté 14 Octobre 2004 bonsoir, voila la solution que j'ai trouvé mettre dans un htaccess cette ligne à la racine du repertoire "php_flag register_globals on" a+
Anonymus Posté 15 Octobre 2004 Posté 15 Octobre 2004 Si tu ne veux pas le faire avec le fichier htaccess, tu peux aussi le faire en php. Pour cela, le principe est d'instancier les variables, sauf celles passées par GET ou POST, qui elles sont récupérées. Personnellement, je considère qu'une application qui récupère toutes les variables n'est pas une bonne application. Il NE faut PAS travailler en register_globals=off. Cela consiste à accépter toutes les variables venant de l'extérieur, donc à laisser la porte de sa maison ouverte. Cela oblige donc à mettre un garde du corps devant la porte, ou si tu préfère, à tester systématiquement toutes les variables, du style : si ($age>0 ou age<100)age=0 etc... Meme celles qui sont déjà dans le script. Si tu y tiens vraiment, donc : http://www.phpindex.com/trucsetastuces/tru...hp3?element=206 ( A noter que la fonction vient du moteur de recherche : Phpdig, comme l'indique son nom : phpdigHttpVars. mais... ce n'est pas mentionné dans l'article, ce qui est bien dommage....) A.
xpatval Posté 16 Octobre 2004 Posté 16 Octobre 2004 Bonjour, Personnellement, je considère qu'une application qui récupère toutes les variables n'est pas une bonne application. Il NE faut PAS travailler en register_globals=off. Je suis d'avis contraire. Il FAUT travailler en register_globals = OFF. D'ailleurs, je pense que c'est ce que tu as voulu dire... Me trompais-je ? xpatval
Anonymus Posté 17 Octobre 2004 Posté 17 Octobre 2004 c'est à quel sujet... ? En fait, oui, il faut travailler avec register_globals = off (je suis allé vérifier ) Pour l'url : localhost/reg.php?pass=coucou et pour le code : echo "<br>get : ".$_GET['pass']; echo "<br> reg. on : ".$pass; register_globals = off donne : get : coucou reg. on : register_globals = on donne : get : coucou reg. on : coucou
Remi Posté 17 Octobre 2004 Posté 17 Octobre 2004 Le plus "secure" n'est-il pas d'utiliser la forme $monparam=(isset($_GET['param']) ? $_GET['param'] : ''); ? Mais bon cela n'enlève rien au gros avantage de travailler en 'global off', car il y a toutes les autres variables... Il suffit de regarder ses logs et de voir comment on se fait "attaquer" en permanence par des zigotos qui mettent plein de trucs en params de nos adresses...
cepiat Posté 19 Octobre 2004 Posté 19 Octobre 2004 (modifié) Il existe un moyen très simple de permettre au script ne fonctionnant pas avec le register global a off. C'est une sorte de patch qui transforme les $_GEt, $_POST en variable du même nom ; ) foreach( $_REQUEST as $e => $f ){ $$e = $f;} A metter au début de chaque page Modifié 19 Octobre 2004 par cepiat
xpatval Posté 19 Octobre 2004 Posté 19 Octobre 2004 Le $_REQUEST n'est pas le seul pour ce genre de chose... Extract() s'utilise aussi pour s'éviter encore plus les complications. Mais dans ce cas, utiliser extract(), ou remettre le register_global à ON (hormis pour les raisons de sécurités) revient à se faciliter la vie en ne plus codant proprement... xpatval
cepiat Posté 19 Octobre 2004 Posté 19 Octobre 2004 (modifié) Entièrement d'accord avec toi, le mieux est de recoder le site , mais dans certains cas(manque de temp, ect...) , cette rustine est pratique . Au sujet de extract , j'y avais pas pensé , c'est vrai plus simple Merci Quoi que je comprend pas trop ce que tu dis en disant Le $_REQUEST n'est pas le seul pour ce genre de chose... Car même en utilisant extract ce serais extract ($_REQUEST) qu'il faudrais mettre. $_REQUEST contient $_GET , $_POST , $_COOKIE et avant php4.3.0 $_FILE aussi Modifié 19 Octobre 2004 par cepiat
xpatval Posté 20 Octobre 2004 Posté 20 Octobre 2004 Je n'ai jamais testé avec extract($_REQUEST)... Seulement avec cela extract($HTTP_POST_VARS,EXTR_OVERWRITE);extract($HTTP_GET_VARS,EXTR_OVERWRITE); xpatval
cepiat Posté 20 Octobre 2004 Posté 20 Octobre 2004 (modifié) Ah oki $HTTP_POST_VARS est déprécier depuis PHP 4.1.0. il faut maintenant utiliser $_POST et $_GET à la place Donc ton code pourrais se simplifier avec extract($_POST,EXTR_OVERWRITE);extract($_GET,EXTR_OVERWRITE); Voir même beaucoup plus simple ; ) avec extract($_REQUEST,EXTR_OVERWRITE) Modifié 20 Octobre 2004 par cepiat
Anonymus Posté 20 Octobre 2004 Posté 20 Octobre 2004 Vous posez un petit problème.... Imaginons que l'on veuille passer des variables POST et GET entre 2 pages. Comment on fait ? La première écrase l'autre ? Et si l'on ajoute les sessions ? Dans le script, on aura quelque chose comme ca : <form method=POST action=index.php?pass=ok><input type=text name=pass value=machin></form> Et pour récupérer les données : if ($_GET['pass']=='ok')if $_POST['pass']==machin)echo "Bonjour machin"; Dans le cas que vous donnez, la première écrase la seconde, qui ne fonctionnera plus. Pourtant le script que je donne est parfaitement valable... ??
cepiat Posté 20 Octobre 2004 Posté 20 Octobre 2004 (modifié) effectivement cela ne règle pas le souci à tous les coups mais , il s'agit là d'une rustine si on change d'herbergeur et que l'on à pas le tempsde recoder, si ca passe avec ca , ca permet de rallonger son sommeil , ce n'est pas une facon de programmer et hereusement Modifié 20 Octobre 2004 par cepiat
Billyboy Posté 21 Octobre 2004 Posté 21 Octobre 2004 (modifié) Cette manip marche-t-elle aussi sur online.net Car la, le register global est forcé, c'est pas un serveur dedié :s Je pense que non, mais on sais jamais. Car en ce moment je boss sur un site et ca risque de poser de serieux pb de securité ( un petit get et voila :s) Modifié 21 Octobre 2004 par Billyboy
xpatval Posté 21 Octobre 2004 Posté 21 Octobre 2004 Dans le cas que vous donnez, la première écrase la seconde, qui ne fonctionnera plus. Pourtant le script que je donne est parfaitement valable... Absolument. A l'époque, lorsque j'ai rencontré ce problème, j'ai pu le résoudre rapidement par $_REQUEST. Ceci évite de se poser la question de la méthode utilisée. L'inconvénient est que si je prône un codage propre en respectant le OFF du register_global, je transgresse ma règle en me simplifiant autrement la vie. Je ne me suis pas penché plus avant afin d'éviter le $_REQUEST, mais je pense qu'il doit être possible (comment ?) de savoir quelle est la méthode utilisée pour chaque variable, puis de passer par une fonction particulière . xpatval
Dan Posté 21 Octobre 2004 Posté 21 Octobre 2004 Pour ceux chez qui la variable register_globals est mise à 'on' et qui n'ont pas accès au fichier php.ini, il existe une solution en rajoutant une ligne dans le fichier .htaccess: php_value register_globals 0 ou pour l'activer si nécessaire: php_value register_globals 1 Dan
Billyboy Posté 21 Octobre 2004 Posté 21 Octobre 2004 Je vais tester ca sur online.net, le meilleur moyen de le savoir c'est d'essayer Je vous dirais si ca marche Merci DAN meme si ca avais deja été cité plus haut @+ Billy
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant