/
Variables

Variables superglobales

01. 11. 2019

Obsah článku

Las variables superglobales se utilizan para pasar el estado global de la aplicación y la comunicación HTTP.

La principal ventaja de estas variables es que siempre y en todo momento están disponibles. En la práctica, se trata de matrices de valores en las que accedemos a información específica por índice. En diferentes contextos, la disponibilidad de las llaves puede variar (se explica a continuación).

Tipos de variables superglobales

Todos los superglobales en PHP son arrays y se denotan con un signo de dólar seguido de un guión bajo (excepto $GLOBALS) y caracteres en mayúscula.

En PHP 7 hay en particular lo siguiente:

Variable Descripción
$_GET
$_POST
$_REQUEST
$_FILES
$_SERVER
$_COOKIE
$_SESSION
¡Atención, no contiene un guión bajo en el nombre! Esta es la llamada variable-global y una notación alternativa para la palabra clave global. Si tienes una variable global $variable en tu aplicación, también puedes acceder a ella con la construcción $GLOBALS["variable"]. Sin embargo, el uso de variables globales es una solución mala e impura por diseño, así que mejor no lo hagas.
$_ENV

Es fácil hacer una lista de todos los valores existentes:

foreach ($_SERVER as $key => $value {
echo $key . ':' . $value . '<br>';
}

Nota: No todos los índices deben existir siempre (por ejemplo, si el script ejecuta cron en modo CLI, el índice con la URL de la página o la dirección IP de la solicitud no existirá).

Acceso a las variables

Recomiendo que todas las variables globales (excepto $_SESSION) sean de sólo lectura. Esto se debe a que contienen datos globales de la aplicación y otro código puede tenerlos en cuenta (por ejemplo, otra biblioteca instalada).

Otra desventaja del estado global es que no siempre se puede confiar en los valores exactos, aunque existan, por lo que siempre hay que comprobar sus claves con la construcción isset().

Para guardar una nueva cookie, utilice setcookie() y no inserte el valor directamente. Esto se debe a que es de sólo lectura.

Lecciones aprendidas

Nunca confíes ciegamente en los valores de las variables superglobales.

El usuario puede utilizar la URL y las cabeceras enviadas para influir en el establecimiento de los valores. Todas las entradas deben ser siempre cuidadosamente validadas.

Registrar globales - el problema con la versión antigua de PHP

En la versión antigua de PHP (hasta 5.4.0), había una directiva especial register-globals (configurable en php.ini) que hacía que todos los parámetros pasados en una URL se registraran automáticamente como variables.

Por ejemplo:

Un usuario llegó a la URL: https://example.com/script.php?var=24

Y PHP creó automáticamente una variable $var con el valor 24 dentro del script.

Así que funcionó de forma clásica:

echo $var;

Por lo tanto, cualquiera podría introducir cualquier variable en el script y cambiar su contenido. Obviamente, la seguridad no siempre fue una prioridad. La verdad es que no.

Otras fuentes

Para una descripción más detallada, consulte el manual oficial.

Jan Barášek   Více o autorovi

Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.

Rád vám pomůžu:

Související články

1.
6.