Contourner le register_globals à off

Placées en tête de votre script, elle recréent les variables envoyées par un post ou un get.
<?
foreach ($_POST as $key => $value) $$key = $value;
foreach ($_GET as $key => $value) $$key = $value;
?>
foreach ($_POST as $key => $value) $$key = $value;
foreach ($_GET as $key => $value) $$key = $value;
?>
Une version simplifiée permet de traiter les deux méthodes d'envoit en une seule boucle:
<?
foreach ($_REQUEST as $key => $value) {
$$key = $value;
}
?>
foreach ($_REQUEST as $key => $value) {
$$key = $value;
}
?>
L'inconvénient de cette méthode est qu'elle utilise les priorités de traitement par défaut, qui sont Environment, GET, POST, Cookie, Server.
Cela veut donc dire que si vous envoyez le même paramètre en GET et en POST, c'est celui envoyé en POST qui sera finalement utilisé dans votre script, ce qui est génant si vous voulez justement pouvoir forcer des valeurs (pour des tests) en rajoutant les variables dans l'url.
Cela fonctionne aussi pour les fichiers uploadés, les cookies et les sessions en utilisant les tableaux globaux $_FILES, $_COOKIE et $_SESSION.