register_globals ? - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : register_globals ? (/showthread.php?tid=5178) |
register_globals ? - Argorate - 18-01-2011 Bonjour, je suis actuellement pas chez moi (car je n'ai pas ce pb chez moi), j'ai installé wamp avec la config par défaut, et j'ai fais la constatation suivante:
J'ai donc regarder dans le php.ini: Citation :register_globals = OffNormal, puisque c'est supposé être a off par défaut, mais donc là... je ne comprend pas pourquoi ça fais ça!? Y a autre chose que le register_globals ? merci. RE: register_globals ? - Sephi-Chan - 18-01-2011 Il me semble que register_global empêche seulement que les clés des superglobals ne génèrent des variables du même nom (avec le gros risque de collision que ça implique). Je ne comprends même pas pourquoi tu utilises GLOBALS. Sephi-Chan RE: register_globals ? - djidi - 18-01-2011 $TEST est définit à l'extérieur d'une fonction donc cela devient logiquement une variable globale et $GLOBALS permet de modifier toutes les globales définies donc rien d'anormal jusque la il me semble. D'ailleurs, dans le tableau $GLOBALS, ta variables $_GET['TEST'] n'est pas $GLOBALS['TEST'] mais $GLOBALS['_GET']['TEST']. Comme dit par Sephi-chan, en désactivant "register_globals" tu empêche surtout que lorsque $_GET['bidule'] est définit, une variable $bidule soit créée. RE: register_globals ? - Argorate - 18-01-2011 Non, mais je n'ai définit nul part $TEST comme étant global. Il n'y a aucune fonction là (si c'est le debug qui te tracasse, tu peut le remplacer par echo en l'occurrence, c'est juste ma fonction que j'utilise mais ça n'a aucun impact sur le sujet en fait^^) Donc tu prends une variable (sans la déclarer en global, un truc tout simple) et si tu utilises $GLOBALS[de cette variable] cela change le contenu de celle-ci, donc je ne comprend vraiment pas, ça ne le fait pas chez moi et encore heureux! ^^ RE: register_globals ? - djidi - 18-01-2011 Une variable, à partir du moment ou elle est définit en dehors d'une fonction est une globale. (Le mot clef global permet dans une fonction d'utiliser la globale indiquée). http://www.php.net/manual/fr/language.variables.scope.php RE: register_globals ? - Anthor - 18-01-2011 http://www.php.net/manual/fr/reserved.variables.globals.php RE: register_globals ? - Argorate - 18-01-2011 Oui oui, je connais $GLOBALS (je faisais justement mumuse avec là), mais soit je ne suis jamais tombé dans ce cas chez moi, soit j'ai un comportement différent, je testerais ça ce soir thx. RE: register_globals ? - Sephi-Chan - 18-01-2011 Déjà, pourquoi tu utilises $GLOBALS ? Ensuite, le comportement que tu as est tout à fait normal (et la partie avec le $_GET ne sert à rien) et n'a rien à voir avec la directive register_globals. Démonstration :
La directive register_globals à on sert juste à transformer $_GET['test'] en $test (idem pour $_POST et peut-être $_REQUEST). Sephi-Chan RE: register_globals ? - Argorate - 18-01-2011 Justement vu que le register_globals permettais l'association de $var et $_GET['var'] et que je pensais que $GLOBALS['var'] été indépendant de $var, je ne comprenais donc pas pourquoi ça faisais ça... Mais effectivement, c'était une fausse idée de ma part, le $GLOBALS permet de récupérer des variables simple qui ne sont pas dans une fonction. Donc en fait je n'étais jamais tombé sur ce cas avant c'est tout. Merci pour la rectification RE: register_globals ? - niahoo - 18-01-2011 Je ne sais pas si tu l'as vu, mais faire un truc du genre Code : $_GET['TEST'] = 1; |