Esto emula el comportamiento de register_globals On.
Código PHP:
<?php
// Emular register_globals on
if (!ini_get('register_globals')) {
$superglobales = array($_SERVER, $_ENV,
$_FILES, $_COOKIE, $_POST, $_GET);
if (isset($_SESSION)) {
array_unshift($superglobales, $_SESSION);
}
foreach ($superglobales as $superglobal) {
extract($superglobal, EXTR_SKIP);
}
}
?>
Esto emula register_globals Off
Código PHP:
<?php
// Emular register_globals off
function retirar_registros_GLOBALS()
{
if (!ini_get('register_globals')) {
return;
}
// Puede que desee cambiar esto por un error mas amigable
if (isset($_REQUEST['GLOBALS']) || isset($_FILES['GLOBALS'])) {
die('Se ha detectado un intento de sobreescritura en GLOBALS');
}
// Variables que no deben ser eliminadas
$noEliminar = array('GLOBALS', '_GET',
'_POST', '_COOKIE',
'_REQUEST', '_SERVER',
'_ENV', '_FILES');
$entrada = array_merge($_GET, $_POST,
$_COOKIE, $_SERVER,
$_ENV, $_FILES,
isset($_SESSION) && is_array($_SESSION) ? $_SESSION : array());
foreach ($entrada as $c => $v) {
if (!in_array($c, $noEliminar) && isset($GLOBALS[$c])) {
unset($GLOBALS[$c]);
}
}
}
retirar_registros_GLOBALS();
?>
este código debe ser llamado al comienzo absoluto de su script