[PHP] Le regiter_globals
18 août 2008 à 13:55, par ChristopheBonjour tout le monde !
Je vais vous parler du register_globals, je trouve que c’est un point important de PHP.
Tout d’abord, je vous conseil de lire cela
Si vous avez bien compris, cette directive permet de donner une égalité entre $_GET['variable'] et $variable
Regardez cet exemple (source: php.net) :
<?php // $authorized = true uniquement si l'utilisateur est identifié if (authenticated_user()) { $authorized = true; } // Comme nous n'avons pas initialisé $authorized avec false, cette dernière // peut être définie via register_globals, comme avec l'URL GET auth.php?authorized=1 // Tout le monde peut facilement être reconnu comme identifié! if ($authorized) { include "/donnees/critiques/data.php"; } ?> |
Embêtant non ?
C’est pour ce genre de faille que je (et pas que moi) vous conseil de mettre register_globals à OFF !
De plus, si plus tard vous voulez passer à PHP 6, vous n’êtes pas sortie d’avance, puisque il vous faudra convertir votre code… (register_globals a été supprimé dans PHP 6, et c’est tant mieux !)
Donc si vous souhaitez récupérer un variable en provenance de l’URL, vous devez faire :
echo $_GET['variable']; |
et non pas
echo $variable; |
Sinon, que votre hébergeur ou votre serveur ai register_globals activé, ce n’est pas grave, il faut déjà ne pas l’utiliser, mais même, je vous conseil de le désactiver d’office si vous pouvez éditer votre php.ini ![]()
Si vous n’avez pas accès au php.ini, vous pouvez le désactiver via un .htaccess de cette façon
php_flag register_globals off |
