> Manuales > Manual de PHP

Qué son y para qué sirven estas variables del servidor. Comentamos algunas de las más útiles.

En los anteriores artículos del Manual de PHP hemos abordado el tema de las variables. Hasta ahora hemos explicado cómo crear nuestras propias variables y almacenar valores, pero si hablamos de variables en PHP no podemos dejar de mencionar a las variables de sistema.

Para entender las variables de sistema tienes que apreciar que PHP es un lenguaje que se ejecuta en el servidor, bajo demanda de un cliente. Por tanto, la ejecución de PHP se produce dentro de un marco muy concreto, donde intervienen varios actores, principalmente el cliente (generalmente el usuario que entra usando su navegador) y el servidor (donde se ejecuta el código PHP, que básicamente debe producir la salida que se enviará al cliente).

Ahora que has asimilado la naturaleza de PHP como lenguaje de lado servidor, debes de entender que en ese marco existen diversas informaciones que pueden ser útiles a la hora de ejecutar aplicaciones web. Dentro de una página PHP tendremos por tanto acceso a toda una serie de variables que nos informan sobre nuestro servidor y sobre el cliente que ha solicitado una determinada página. A estas informaciones, que podemos recoger en forma de variables, les llamamos "variables de sistema".

Nota: La información de estas variables es atribuida por el servidor y en ningún caso nos es posible modificar sus valores directamente mediante el script. Para hacerlo es necesario influir directamente sobre la propiedad que definen.

$_SERVER

La mayoría de las variables de sistema las podemos recibir a partir de un array denominado $_SERVER.

Nota: $_SERVER es un array asociativo, cuyos índices son cadenas de texto y no números. Aún no hemos abordado el tema de arrays en PHP, pero lo veremos con detalla más adelante.

Técnicamente $_SERVER se conoce como una "variable superglobal", de la que hablaremos en este mismo artículo un poco después. Existen multitud de datos asociados al array $_SERVER, algunos sin utilidad aparente y otros realmente interesantes y con una aplicación directa para nuestras aplicaciones web. Aquí os enumeramos algunas de estas variables y la información que nos aportan:

No todas estas variables están disponibles en la totalidad de servidores o en determinadas versiones de un mismo servidor. además, algunas de ellas han de ser previamente activadas o definidas por medio de algún acontecimiento. Así, por ejemplo, la variable $HTTP_REFERER no tendrá un valor definido, a menos que el internauta acceda al script a partir de un enlace desde otra página.

Si quieres ver cuál es el conjunto completo de las variables del sistema que dispones dentro de $_SERVER en tu entorno, es suficiente con escribir y ejecutar una página PHP que contenga este código:

<?php
var_dump($_SERVER);
?>

Eso realizará un listado de todo el contenido del array asociativo $_SERVER y lo mostrará como salida en la página web.

Variables superglobales

A partir de PHP 4.1.0, se dispone de un conjunto de variables de tipo array que mantienen información del sistema, llamadas "superglobales" porque se definen automáticamente en un ámbito global y a las que se puede acceder desde cualquier punto del código PHP.

Nota: Estas variables ya existían anteriormente en PHP, aunque se accedían desde otros arrays. Si lees artículos antiguos de PHP, o ya conoces PHP desde hace mucho tiempo, te puede aclarar que algunas de estas variables superglobales se accedían accedían antes por medio de los arrays del tipo $HTTP_*_VARS. Por ejemplo $_GET antes era $HTTP_GET_VARS o $_POST era antes $HTTP_POST_VARS. La forma antigua de referencia a las variables superglobales todavía se puede activar en algunos servidores, desde el php.ini con la directiva register_long_arrays.

La lista de estas variables superglobales de PHP es la siguiente:

$GLOBALS

Contiene una referencia a cada variable disponible en el espectro de las variables del script. Las llaves de esta matriz (índices del array) son los nombres de las variables globales. $GLOBALS existe dese PHP 3.

$_SERVER

Variables definidas por el servidor web ó directamente relacionadas con el entorno en don el script se esta ejecutando. Es equivalente a lo que antes se conocía como $HTTP_SERVER_VARS. Son las variables de sistema que hemos explicado antes en este artículo.

$_GET

Variables proporcionadas al script por medio de HTTP GET. Es equivalente a lo que antes se conocía como $HTTP_GET_VARS.

$_POST

Variables proporcionadas al script por medio de HTTP POST. Es equivalente a lo que antes se conocía como $HTTP_POST_VARS.

$_COOKIE

Variables proporcionadas al script por medio de HTTP cookies. Es equivalente a lo que antes se conocía como $HTTP_COOKIE_VARS.

$_FILES

Variables proporcionadas al script por medio de la subida de ficheros via HTTP . Es equivalente a lo que antes se conocía como $HTTP_POST_FILES.

$_ENV

Variables proporcionadas al script por medio del entorno. Es equivalente a lo que antes se conocía como $HTTP_ENV_VARS.

$_REQUEST

Variables proporcionadas al script por medio de cualquier mecanismo de entrada del usuario. La presencia y el orden en que aparecen las variables en esta matriz es definido por la directiva de configuración variables_order. Esta matriz no tiene un análogo en versiones anteriores a PHP 4.1.0.

Nota: Como en $_REQUEST se pueden mezclar variables que pueden venir de varios lugares, no suele ser muy recomendable usarla, porque nos pueden inyectar datos de diversas maneras. Si los datos sabemos que nos llegan de un formulario lo suyo es usar $_POST, que nos asegura que ninguna entrada por otro lugar nos contaminará ese conjunto de variables. Solo podrías confiar en $_REQUEST si la operación que quieres realizar es realmente poco crítica para la seguridad de tu aplicación.

$_SESSION

Variables registradas en la sesión del script. Es equivalente a lo que antes se conocía como $HTTP_SESSION_VARS. Vea también la sección Funciones para el manejo de sessiones para más información.

Conclusión

De momento dejamos este conocimiento en el aire. Abordaremos cada una de estas variables superglobales en el futuro, en diversas partes del manual. Por ejemplo $_SESSION lo veremos cuando hablemos de la sesión en PHP, $_POST cuando se explique el envío de formularios, etc.

Rubén Alvarez

Rubén es doctor en química y programador aficionado con experiencia en PHP.

Manual