Accès direct aux variables contenues dans $_GET

Eléphanteau du PHP | 15 Messages

10 août 2015, 20:46

Bonsoir,

Sous l'abus de langage qui se trame dans le titre de ce thread, je recherche une info :
Je suis en train de retaper un script assez vieux et visiblement, il y a un comportement qui permet de créer une variable $variable s'il existe un index 'variable' dans la superglobale GET. Je n'ai pas trouvé de traces de fonction écrite en PHP qui permettrait de réaliser ça. Il me semble qu'il existe une directive permettant cette vilainie, mais je n'ai pas réussi à la retrouver...
En gros, là ou je devrais accéder à une variable par $_GET['variable'], je peux faire $variable directement. C'est codé comme ça, je trouve ça absolument moche mais si je veux avoir une idée de ce à quoi ressemble l'appli pendant que je retape le tout, je vais devoir le faire, ne serait-ce que ponctuellement. Une idée ?

Merci bien !

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

10 août 2015, 22:02

Bonsoir,

Il s'agit de la directive register_globals qui est passé de On à Off dans PHP 4.2 (avril 2002 !) et a été complètement retirée en PHP 5.4.

Si tu as une version de PHP < 5.4 :arrow: tu peux la réactiver.
Si tu as une version PHP > 5.4 :arrow: tu peux faire un include en début de tout tes fichiers d'un script qui va te faire un foreach() sur $_GET pour assigner chaque variable avec sa valeur dans $_GET[*]

Quoiqu'il en soit je nierai, même sous la torture t'avoir fait cette réponse, la seule réponse acceptable étant de recoder tes scripts proprement parce que du code de 2002 c'est super crado et risqué à reprendre. :)
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 15 Messages

10 août 2015, 22:29

Yes c'est bien ça !
Un grand merci : je savais que ça existait mais plus moyen de remettre un nom sur cette directive. Je crois que c'est l'un des plus vieux fossiles du PHP auquel j'ai été confronté, mais certainement pas le dernier ni le plus ancien.

Je vais pouvoir continuer mon grand ménage from scratch. Promis, pour la réponse ça reste ici. :wink:

ViPHP
ViPHP | 5924 Messages

10 août 2015, 22:42

Bonjour,
Encore plus court, la même idée avec la fonction extract() au lieu d'un foreach !
http://php.net/manual/fr/function.extract.php

Cordialement

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

10 août 2015, 23:42

Bonjour,
Encore plus court, la même idée avec la fonction extract() au lieu d'un foreach !
http://php.net/manual/fr/function.extract.php

Cordialement
Bien vu ! :)
Quand tout le reste a échoué, lisez le mode d'emploi...