Ver Mensaje Individual
  #11 (permalink)  
Antiguo 24/09/2007, 04:31
Avatar de Musika
Musika
 
Fecha de Ingreso: junio-2002
Mensajes: 72
Antigüedad: 22 años, 9 meses
Puntos: 0
un solucion encontrada - pero aun hay fallo)

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($superglobalEXTR_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
__________________
La mejor forma de enseñar es aprendiendo
------------------------------------------------
Un pokitin de Musika en tu Vida