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".
$_SERVER
La mayoría de las variables de sistema las podemos recibir a partir de un array denominado $_SERVER
.
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:
- $_SERVER["HTTP_USER_AGENT"] Nos informa principalmente sobre el sistema operativo y tipo y versión de navegador utilizado por el internauta. Su principal utilidad radica en que, a partir de esta información, podemos redireccionar nuestros usuarios hacia páginas optimizadas para su navegador o realizar cualquier otro tipo de acción en el contexto de un navegador determinado.
- $_SERVER["HTTP_ACCEPT_LANGUAGE"] Nos devuelve la o las abreviaciones de la lengua considerada como principal por el navegador. Esta lengua o lenguas principales pueden ser elegidas en el menú de opciones del navegador. Esta variable resulta también extremadamente útil para enviar al internauta a las páginas escritas en su lengua, si es que existen.
- $_SERVER["HTTP_REFERER"] Nos indica la URL desde la cual el internauta ha tenido acceso a la página. Muy interesante para generar botones de "Atrás" dinámicos o para crear nuestros propios sistemas de estadísticas de visitas.
- $_SERVER["PHP_SELF"] Nos devuelve una cadena con la URL del script que está siendo ejecutado. Muy interesante para crear botones para recargar la página.
- $_SERVER["HTTP_GET_VARS"] Se trata de un array que almacena los nombres y contenidos de las variables enviadas al script por URL o por formularios GET.
- $_SERVER["HTTP_POST_VARS"] Se trata de un array que almacena los nombres y contenidos de las variables enviadas al script por medio de un formulario POST.
- $_SERVER["HTTP_COOKIE_VARS"] Se trata de un array que almacena los nombres y contenidos de las cookies. Veremos qué son más adelante.
- $_SERVER["PHP_AUTH_USER"] Almacena la variable usuario cuando se efectúa la entrada a páginas de acceso restringido. Combinado con $_SERVER["PHP_AUTH_PW"] resulta ideal para controlar el acceso a las páginas internas del sitio.
- $_SERVER["PHP_AUTH_PW"] Almacena la variable password cuando se efectúa la entrada a páginas de acceso restringido. Combinado con $_SERVER["PHP_AUTH_USER"] resulta ideal para controlar el acceso a las páginas internas del sitio.
- $_SERVER["REMOTE_ADDR"] Muestra la dirección IP del visitante.
- $_SERVER["DOCUMENT_ROOT"] Nos devuelve el path físico en el que se encuentra alojada la página en el servidor.
- $_SERVER["PHPSESSID"] Guarda el identificador de sesión del usuario. Veremos más adelante en qué consisten las sesiones.
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.
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.
$_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 principalmente en sus ratos libres con...