Forum und email

Variables Predefinidas

A partir de PHP 4.1.0, el método preferido para recuperar variables externas es mediante las superglobales mencionadas más adelante. Antes de este punto, la gente recaía en register_globals o las matrices largas predefinidas en PHP ($HTTP_*_VARS). A partir de PHP 5.0.0, las matrices de tipo "long" de variables predefinidas, se pueden desactivar con la directiva register_long_arrays.

Variables de servidor: $_SERVER

Note: Aparecieron en 4.1.0. En versiones anteriores, utilice $HTTP_SERVER_VARS.

$_SERVER es una matriz que contiene información tal como cabeceras, rutas y ubicaciones de scripts. Las entradas de esta matriz son creadas por el servidor web. No existen garantías de que cada servidor vaya a proveer alguno de estos valores; puede que los servidores omitan algunos, o provean otros que no se listan aquí. Hecha esta aclaración, un gran número de estas variables hacen parte de la » especificación CGI 1.1, así que puede esperar que sean definidas por el servidor.

Esta es una variable 'superglobal', o global automática. Esto simplemente quiere decir que está disponible en todos los contextos a lo largo de un script. No necesita hacer global $_SERVER; para acceder a ella dentro de funciones o métodos, como lo hace con $HTTP_SERVER_VARS.

$HTTP_SERVER_VARS contiene la misma información inicial, pero no es una superglobal. (Note que $HTTP_SERVER_VARS y $_SERVER son variables diferentes y que PHP las trata como tal)

Si la directiva register_globals está definida, entonces estas variables también estarán disponibles en el contexto global del script; esto quiere decir, por separado de las matrices $_SERVER y $HTTP_SERVER_VARS. Para información relacionada, vea el capítulo de seguridad titulado Uso de Registros Globales. Estas variables globales individuales no son superglobales.

Usted puede encontrar o no cualquiera de los siguientes elementos en $_SERVER. Note que algunos de éstos, si es que los hay, estarán disponibles (o tendrán algún significado después de todo) si se ejecuta PHP en la línea de comandos.

'PHP_SELF'
El nombre de archivo del script ejecutándose actualmente, relativo a la raíz de documentos. Por ejemplo, $_SERVER['PHP_SELF'] en un script en la dirección https://example.com/test.php/foo.bar sería /test.php/foo.bar. La constante __FILE__ contiene la ruta completa y nombre del archivo actual (es decir, incluido). Si PHP está siendo ejecutado como un procesador de línea de comandos, esta variable contiene el nombre del script a partir de PHP 4.3.0. Anteriormente no estaba disponible.
'argv'
Matriz de argumentos pasados al script. Cuando el script es ejecutado en la línea de comandos, ésta entrega acesso al estilo C a los parámetros de la línea de comandos. Cuando es llamado mediante el método GET, ésta contendrá la cadena de consulta (query).
'argc'
Contiene el número de parámetros de línea de comandos pasados al script (si se ejecuta en la línea de comandos).
'GATEWAY_INTERFACE'
Qué revisión de la especificación CGI está usando el servidor; es decir 'CGI/1.1'.
'SERVER_ADDR'
La dirección IP del servidor bajo la cual está siendo ejecutado el script actual.
'SERVER_NAME'
El nombre del servidor anfitrión bajo el que está siendo ejecutado el script actual. Si el script está corriendo en un host virtual, éste será el valor definido para tal host virtual.
'SERVER_SOFTWARE'
Cadena de identificación del servidor, dada en las cabeceras cuando se responde a peticiones.
'SERVER_PROTOCOL'
Nombre y revisión del protocolo de información mediante el cual fue solicitada la página; es decir, 'HTTP/1.0';
'REQUEST_METHOD'
Cuál método de petición fue usado para acceder a la página; es decir, 'GET', 'HEAD', 'POST', 'PUT'.

Note: El script PHP es finalizado luego de enviar las cabeceras (es decir, después de producir cualquier salida sin uso de búferes de salida) si el método de petición fue HEAD.

'REQUEST_TIME'
La marca de tiempo del inicio de la petición. Disponible desde PHP 5.1.0.
'QUERY_STRING'
La cadena de consulta, si existe, mediante la cual se accedió a la página.
'DOCUMENT_ROOT'
El directorio raíz de documentos bajo el que está siendo ejecutado el script actual, tal y como se define en el archivo de configuración del servidor.
'HTTP_ACCEPT'
Contenidos de la cabecera Accept: de la petición actual, si existe.
'HTTP_ACCEPT_CHARSET'
Contenidos de la cabecera Accept-Charset: de la petición actual, si existe. Ejemplo: 'iso-8859-1,*,utf-8'.
'HTTP_ACCEPT_ENCODING'
Contenidos de la cabecera Accept-Encoding: de la petición actual, si existe. Ejemplo: 'gzip'.
'HTTP_ACCEPT_LANGUAGE'
Contenidos de la cabecera Accept-Language: de la petición actual, si existe. Ejemplo: 'en'.
'HTTP_CONNECTION'
Contenidos de la cabecera Connection: de la petición actual, si existe. Ejemplo: 'Keep-Alive'.
'HTTP_HOST'
Contenidos de la cabecera Host: de la petición actual, si existe.
'HTTP_REFERER'
La dirección de la página (si la hay) la cual refirió al agente de usuario a la página actual. Este valor es definido por el agente de usuario. No todos los agentes de usuario lo definen, y algunos proveen la capacidad de modificar HTTP_REFERER como una característica del software. En resumen, no se puede confiar realmente en este valor.
'HTTP_USER_AGENT'
Contenidos de la cabecera User-Agent: de la petición actual, si existe. Esta es una cadena que denota el agente de usuario que está accediendo a la página. Un ejemplo típico es: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). Entre otras cosas, puede usar este valor con get_browser() para personalizar la salida de su página a las capacidades del agente de usuario.
'HTTPS'
Definido con un valor no-vacío si el script fue solicitado a través del protocolo HTTPS. Note que cuando se usa ISAPI con IIS, el valor será off si la petición no fue hecha a través del protocolo HTTPS.
'REMOTE_ADDR'
La dirección IP desde donde el usuario está observado la página actual.
'REMOTE_HOST'
El nombre Host desde donde el usuario está viendo la página actual. La consulta dns de vuelta está basada en el valor REMOTE_ADDR del usuario.

Note: Su servidor web debe estar configurado para crear esta variable. Por ejemplo, en Apache necesitará HostnameLookups On dentro de httpd.conf para que exista. Vea también gethostbyaddr().

'REMOTE_PORT'
El puerto que está siendo usado en la máquina del usuario para comunicarse con el servidor web.
'SCRIPT_FILENAME'

La ruta absoluta del nombre del script siendo ejecutado actualmente.

Note: Si un script es ejecutado en el entorno CLI usando una ruta relativa, tal como archivo.php o ../archivo.php, $_SERVER['SCRIPT_FILENAME'] contendrá la ruta relativa especificada por el usuario.

'SERVER_ADMIN'
El valor dado a la directiva SERVER_ADMIN (para Apache) en el archivo de configuración del servidor web. Si el script está siendo ejecutado en un host virtual, éste será el valor definido para ese host virtual.
'SERVER_PORT'
El puerto en el equipo servidor que está siendo usado por el servidor web para comunicación. En configuraciones predeterminadas, ese valor será '80'; usando SSL, por ejemplo, este valor cambiará a cualquiera que sea el puerto que esté definido para HTTP seguro.
'SERVER_SIGNATURE'
Cadena que contiene la versión del servidor y el nombre de host virtual que es agregado a las páginas generadas por el servidor, si está habilitada esta funcionalidad.
'PATH_TRANSLATED'
Ruta sobre el sistema de archivos (no la raíz de documentos) al script actual, luego de que el servidor haya realizado cualquier asignación al vuelo virtual-a-real.

Note: A partir de PHP 4.3.2, PATH_TRANSLATED ya no se define implícitamente bajo la SAPI de Apache 2, a diferencia de lo que ocurre en Apache 1, en donde se define con el mismo valor de la variable de servidor SCRIPT_FILENAME cuando Apache no se encarga de definirlo. Este cambio fue realizado para cumplir con la especificación CGI de que PATH_TRANSLATED debe existir únicamente si PATH_INFO se define. Los usuarios de Apache 2 pueden usar AcceptPathInfo = On al interior de httpd.conf para definir PATH_INFO.

'SCRIPT_NAME'
Contiene la ruta del script actual. Ésta es útil para páginas que necesitan apuntar a ellas mismas. La constante __FILE__ contiene la ruta completa y nombre del archivo actual (es decir, incluido).
'REQUEST_URI'
El URI que fue dado para acceder a esta página; por ejemplo, '/index.html'.
'PHP_AUTH_DIGEST'
Cuando se está corriendo bajo Apache como módulo, realizando autenticación HTTP Digest, esta variable recibe el valor de la cabecera 'Authorization' enviada por el cliente (la cual debería ser usada para efectuar la validación apropiada).
'PHP_AUTH_USER'
Cuando se corre sobre Apache o IIS (ISAPI en PHP 5) como módulo realizando autenticación HTTP, esta variable es definida con el nombre de usuario definido por el cliente.
'PHP_AUTH_PW'
Cuando se corre sobre Apache o IIS (ISAPI en PHP 5) como módulo realizando autenticación HTTP, esta variable es definida con la contraseña entregada por el usuario.
'AUTH_TYPE'
Cuando se corre sobre Apache como módulo realizando autenticación HTTP, esta variable es definida con el tipo de autenticación.

Variables de entorno: $_ENV

Note: Introducidas en 4.1.0. En versiones anteriores, use $HTTP_ENV_VARS.

Estas variables son importadas en el espacio de nombres global de PHP desde el entorno bajo el que está siendo ejecutado el intérprete PHP. Muchas son entregadas por el intérprete de comandos bajo el que PHP está corriendo y diferentes sistemas suelen tener diferentes tipos de intérpretes de comandos, una lista definitiva es imposible. Por favor consulte la documentación de su intérprete de comandos por una lista de varibles de entorno que resultan definidas.

Otras variables de entorno incluyen las variables CGI, colocadas allí independientemente de que PHP esté siendo ejecutado como módulo del servidor o procesador CGI.

Esta es una variable 'superglobal', o global automática. Esto simplemente quiere decir que está disponible en todos los contextos a lo largo del script. No necesita hacer global $_ENV; para acceder a ella desde funciones o métodos, tal y como lo hace con $HTTP_ENV_VARS.

$HTTP_ENV_VARS contiene la misma información inicial, pero no es una superglobal. (Note que $HTTP_ENV_VARS y $_ENV son variables diferentes y que PHP las trata como tal)

Si la directiva register_globals está definida, entonces estas variables también se harán disponibles en el entorno global del script; i.e., por separado de las matrices $_ENV y $HTTP_ENV_VARS. Para información relacionada, consulte el capítulo de seguridad titulado Uso de Registros Globales. Estas globales individuales no son superglobales.

Cookies HTTP: $_COOKIE

Note: Introducidas en 4.1.0. En versiones anteriores, use $HTTP_COOKIE_VARS.

Una matriz asociativa de variables pasadas al script actual a través de cookies HTTP. Global automáticamente en cualquier contexto.

Esta es una variable 'superglobal', o global automática. Esto simplemente quiere decir que está disponible en todos los contextos a lo largo de un script. No necesita hacer global $_COOKIE; para acceder a ella dentro de funciones o métodos, como lo hace con $HTTP_COOKIE_VARS.

$HTTP_COOKIE_VARS contiene la misma información inicial, pero no es una superglobal. (Note que $HTTP_COOKIE_VARS y $_COOKIE son variables diferentes y que PHP las trata como tal)

Si la directiva register_globals está definida, entonces estas variables también estarán disponibles en el contexto global del script; i.e., por separado de las matrices $_COOKIE y $HTTP_COOKIE_VARS. Para información relacionada, consulte el capítulo de seguridad titulado Uso de Registros Globales. Estas globales individuales no son superglobales.

Variables HTTP GET: $_GET

Note: Introducidas en 4.1.0. En versiones anteriores, use $HTTP_GET_VARS.

Una matriz asociativa de variables pasadas al script actual a través del método HTTP GET. Global automáticamente en cualquier contexto.

Esta es una variable 'superglobal', o global automática. Esto simplemente quiere decir que está disponible en todos los contextos a lo largo de un script. No necesita hacer global $_GET; para acceder a ella dentro de funciones o métodos, como lo hace con $HTTP_GET_VARS.

$HTTP_GET_VARS contiene la misma información inicial, pero no es una superglobal. (Note que $HTTP_GET_VARS y $_GET son variables diferentes y que PHP las trata como tal)

Si la directiva register_globals está definida, entonces estas variables también estarán disponibles en el contexto global del script; i.e., por separado de las matrices $_GET y $HTTP_GET_VARS. Para información relacionada, consulte el capítulo de seguridad titulado Uso de Registros Globales. Estas globales individuales no son superglobales.

Variables HTTP POST: $_POST

Note: Introducidas en 4.1.0. En versiones anteriores, use $HTTP_POST_VARS.

Una matriz asociativa de variables pasadas al script actual a través del método HTTP POST. Global automáticamente en cualquier contexto.

Esta es una variable 'superglobal', o global automática. Esto simplemente quiere decir que está disponible en todos los contextos a lo largo de un script. No necesita hacer global $_POST; para acceder a ella dentro de funciones o métodos, como lo hace con $HTTP_POST_VARS.

$HTTP_POST_VARS contiene la misma información inicial, pero no es una superglobal. (Note que $HTTP_POST_VARS y $_POST son variables diferentes y que PHP las trata como tal)

Si la directiva register_globals está definida, entonces estas variables también estarán disponibles en el contexto global del script; i.e., por separado de las matrices $_POST y $HTTP_POST_VARS. Para información relacionada, consulte el capítulo de seguridad titulado Uso de Registros Globales. Estas globales individuales no son superglobales.

Variables de carga de archivos HTTP: $_FILES

Note: Introducidas en 4.1.0. En versiones anteriores, use $HTTP_POST_FILES.

Una matriz asociativa de elementos cargados al script actual a través del método HTTP POST. Global automáticamente en cualquier contexto.

Esta es una variable 'superglobal', o global automática. Esto simplemente quiere decir que está disponible en todos los contextos a lo largo de un script. No necesita hacer global $_FILES; para acceder a ella dentro de funciones o métodos, como lo hace con $HTTP_POST_FILES.

$HTTP_POST_FILES contiene la misma información inicial, pero no es una superglobal. (Note que $HTTP_POST_FILES y $_FILES son variables diferentes y que PHP las trata como tal)

Si la directiva register_globals está definida, entonces estas variables también estarán disponibles en el contexto global del script; i.e., por separado de las matrices $_FILES y $HTTP_POST_FILES. Para información relacionada, consulte el capítulo de seguridad titulado Uso de Registros Globales. Estas globales individuales no son superglobales.

Variables de petición: $_REQUEST

Note: Introducidas en 4.1.0. No existe una matriz equivalente en versiones anteriores.

Note: Antes de PHP 4.3.0, la información de $_FILES también era incluida en $_REQUEST.

Una matriz asociativa que consiste en los contenidos de $_GET, $_POST, y $_COOKIE.

Esta es una variable 'superglobal', o global automática. Esto simplemente quiere decir que está disponible en todos los contextos a lo largo de un script. No necesita hacer global $_REQUEST; para acceder a ella dentro de funciones o métodos.

Si la directiva register_globals está definida, entonces estas variables también estarán disponibles en el contexto global del script; i.e., por separado de la matriz $_REQUEST. Para información relacionada, consulte el capítulo de seguridad titulado Uso de Registros Globales. Estas globales individuales no son superglobales.

Variables de sesión: $_SESSION

Note: Introducidas en 4.1.0. En versiones anteriores, use $HTTP_SESSION_VARS.

Una matriz asociativa que contiene las variables de sesión disponibles en el script actual. Consulte la documentación sobre Funciones de Sesión para más información sobre cómo es usada esta matriz.

Esta es una variable 'superglobal', o global automática. Esto simplemente quiere decir que está disponible en todos los contextos a lo largo de un script. No necesita hacer global $_SESSION; para acceder a ella dentro de funciones o métodos, como lo hace con $HTTP_SESSION_VARS.

$HTTP_SESSION_VARS contiene la misma información, pero no es una superglobal. (Note que $HTTP_SESSION_VARS y $_SESSION son variable diferentes y que PHP las trata como tal)

Si la directiva register_globals está definida, entonces estas variables también estarán disponibles en el contexto global del script; i.e., por separado de las matrices $_SESSION y $HTTP_SESSION_VARS. Para información relacionada, consulte el capítulo de seguridad titulado Uso de Registros Globales. Estas globales individuales no son superglobales.

Variables globales: $GLOBALS

Note: $GLOBALS ha estado disponible desde PHP 3.0.0.

Una matriz asociativa que contiene referencias a todas las variables que están definidas actualmente en el contexto global del script. Los nombres de las variables son las claves de la matriz.

Esta es una variable 'superglobal', o global automática. Esto simplemente quiere decir que está disponible en todos los contextos a lo largo de un script. No necesita hacer global $_GLOBALS; para acceder a ella dentro de funciones o métodos.

El mensaje de error previo: $php_errormsg

$php_errormsg es una variable que contiene el texto del último mensaje de error generado por PHP. Esta variable solo estará disponibles dentro del contexto en el que el error ocurrió, y solo si la opción de configuración track_errors está habilitada (por omisión está definida como off).

Datos POST puros: $HTTP_RAW_POST_DATA

$HTTP_RAW_POST_DATA contiene los datos POST inalterados. Vea always_populate_raw_post_data

Cabeceras de respuesta HTTP: $http_response_header

La matriz $http_response_header es similar a la función get_headers(). Cuando se usa la envoltura HTTP $http_response_header será populada con las cabeceras de respuesta HTTP.