¿Cómo habilitar Register Globals en PHP 5?

Si eres de esas personas que entiende de los riesgos potenciales de seguridad pero mismo asi necesitas ejecutar tu código php con el register_globals, te dejos unos tips de como hacero sin ninguna complicación. Estos tips lo encontre en Mr PHP

Si tienes acceso al php.ini de tu servidor entonces solo tendras que hacer lo siguiente. Deberas ajustar el register_globals a 1 y listo.

register_globals = 1

Por otro lado en caso de que no tengas acceso al php.ini de tu servidor, talvez esta segunda manera de habilitar el Registger Globals te servira. Esta vez puedes hacerlo editando el archivo .htaccess caso no tengas creado este archivo bastaria con crear utilzando cualquiero editor de texto y guardarlo como .htaccess. Dentro de ese archivo añadimos el siguiente código.

php_flag register_globals 1

Si intentaste hacer de ambas formas pero ninguna de ellas te funciona o no tienes los privilegios o accesos necesarios aca te dejo otra forma de poder habilitar el register_globals, solo que de esta vez ya no es solo colocar una línea, de esta vez tendremos que poner las manos en la masa y a codificar.

Al inicio de tu script debes incluir el archivo register_globals.php

<?php
include('register_globals.php');
register_globals();
?>

Dentro del register_globals.php pondremos el siguiente código.

<?php
/**
 * function to emulate the register_globals setting in PHP
 * for all of those diehard fans of possibly harmful PHP settings :-)
 * @author Ruquay K Calloway
 * @param string $order order in which to register the globals, e.g. 'egpcs' for default
 * @link hxxp://www.php.net/manual/en/security.globals.php#82213
 */
function register_globals($order = 'egpcs')
{
    // define a subroutine
    if(!function_exists('register_global_array'))
    {
        function register_global_array(array $superglobal)
        {
            foreach($superglobal as $varname => $value)
            {
                global $$varname;
                $$varname = $value;
            }
        }
    }
    
    $order = explode("\r\n", trim(chunk_split($order, 1)));
    foreach($order as $k)
    {
        switch(strtolower($k))
        {
            case 'e':    register_global_array($_ENV);        break;
            case 'g':    register_global_array($_GET);        break;
            case 'p':    register_global_array($_POST);        break;
            case 'c':    register_global_array($_COOKIE);    break;
            case 's':    register_global_array($_SERVER);    break;
        }
    }
}
 
/**
 * Undo register_globals
 * @author Ruquay K Calloway
 * @link hxxp://www.php.net/manual/en/security.globals.php#82213
 */
function unregister_globals() {
    if (ini_get(register_globals)) {
        $array = array('_REQUEST', '_SESSION', '_SERVER', '_ENV', '_FILES');
        foreach ($array as $value) {
            foreach ($GLOBALS[$value] as $key => $var) {
                if ($var === $GLOBALS[$key]) {
                    unset($GLOBALS[$key]);
                }
            }
        }
    }
}
?>

Este código vino como un guante a la mano, me resulto muy util asi que lo quiero compartir con ustedes.  lo encontre exactamente en este enlace http://mrphp.com.au/blog/how-enable-register-globals-php-5

 

2 comentarios en “¿Cómo habilitar Register Globals en PHP 5?”

  1. Excelente ayuda, tenia un codigo desarrollado de hace mas 10 años, y al cambiar de servidor no funciono, despues de revisar e investigar, efectivamente la variable register_global fue desactivada de PHP version 5.4 en adelante, por ende la forma en como se pasaba las variables requeria que esta variable este habilitada.

    Y este codigo ayuda, me soluciono el problema.

    Gracias

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.