PHP proporciona una gran cantidad de variables predefinidas para todos los scripts. Las variables representan de todo, desde variables externas hasta variables de entorno incorporadas, desde los últimos mensajes de error hasta los últimos encabezados recuperados.
Tabla de contenidos
Superglobals — Superglobals son variables internas que están disponibles siempre en todos los ámbitos
$GLOBALS — Hace referencia a todas las variables disponibles en el ámbito global
$_SERVER — Información del entorno del servidor y de ejecución
$_GET — Variables HTTP GET
$_POST — Variables POST de HTTP
$_FILES — Variables de subida de ficheros HTTP
$_REQUEST — Variables HTTP Request
$_SESSION — Variables de sesión
$_ENV — Variables de entorno
$_COOKIE — Cookies HTTP
$php_errormsg — El mensaje de error anterior
$HTTP_RAW_POST_DATA — Datos POST sin tratar
$http_response_header — Encabezados de respuesta HTTP
$argc — El número de argumentos pasados a un script
$argv — Array de argumentos pasados a un script
$GLOBALS
(PHP 4, PHP 5, PHP 7)
$GLOBALS — Hace referencia a todas las variables disponibles en el ámbito global
Descripción
Es un array asociativo que contiene las referencias a todas la variables que están definidas en el ámbito global del script. Los nombres de las variables son las claves del array.
Ejemplo #1 Ejemplo de $GLOBALS
<?php function test() { $foo = "variable local"; echo '$foo en el ámbito global: ' . $GLOBALS . "\n"; echo '$foo en el ámbito simple: ' . $foo . "\n"; } $foo = "Contenido de ejemplo"; test(); ?>
$_SERVER
(PHP 4 >= 4.1.0, PHP 5, PHP 7)
Descripción
$_SERVER es un array que contiene información, tales como cabeceras, rutas y ubicaciones de script. Las entradas de este array son creadas por el servidor web. No hay garantía que cada servidor web proporcione alguna de estas entradas, existen servidores que pueden omitir algunas o proporcionar otras no recogidas aquí. Un gran número de estas variables se encuentran recogidas en » especificación CGI 1.1, así que al menos debe esperar encontrar estas entradas.
Índices
Puede encontrar o no los siguientes elementos en $_SERVER. Tenga en cuenta que si ejecuta PHP desde línea de comando pocos o ninguno de los siguientes elementos estarán disponibles (o tendrán algún significado).
‘PHP_SELF’
El nombre del archivo de script ejecutándose actualmente, relativa al directorio raíz de documentos del servidor. Por ejemplo, el valor de $_SERVER en un script ejecutado en la dirección http://example.com/foo/bar.php será /foo/bar.php. La constante __FILE__ contiene la ruta completa del fichero actual, incluyendo el nombre del archivo. Si PHP se está ejecutando como un proceso de línea de comando, esta variable es el nombre del script desde PHP 4.3.0. En anteriores versiones no estaba disponible.
‘argv’
Array de los argumentos enviados al script. Cuando se ejecuta el script en línea de comando se obtiene acceso a los parámetros de línea de comando con un estilo parecido a como sería en C. Cuando se ejecuta el script mediante el método GET, contendrá la cadena de la consulta.
‘argc’
Contiene el número de parámetros de línea de comando enviados al script (si se ejecuta en línea de comando).
‘GATEWAY_INTERFACE’
Número de revisión de la especificación CGI que está empleando el servidor, por ejemplo ‘CGI/1.1’.
‘SERVER_ADDR’
La dirección IP del servidor donde se está ejecutando actualmente el script.
‘SERVER_NAME’
El nombre del host del servidor donde se está ejecutando actualmente el script. Si el script se ejecuta en un host virtual se obtendrá el valor del nombre definido para dicho host virtual.
‘SERVER_SOFTWARE’
Cadena de identificación del servidor dada en las cabeceras de respuesta a las peticiones.
‘SERVER_PROTOCOL’
Nombre y número de revisión del protocolo de información a través del cual la página es solicitada, por ejemplo ‘HTTP/1.0’.
‘REQUEST_METHOD’
Método de petición empleado para acceder a la página, es decir ‘GET’, ‘HEAD’, ‘POST’, ‘PUT’.
‘REQUEST_TIME’
Fecha Unix de inicio de la petición. Disponible desde PHP 5.1.0.
‘REQUEST_TIME_FLOAT’
El timestamp del inicio de la solicitud, con precisión microsegundo. Disponible desde PHP 5.4.0.
‘QUERY_STRING’
Si existe, la cadena de la consulta de la petición de la página.
‘DOCUMENT_ROOT’
El directorio raíz de documentos del servidor en el cual se está ejecutando el script actual, según está definida en el archivo de configuración del servidor.
‘HTTP_ACCEPT’
Contenido de la cabecera Accept: de la petición actual, si existe.
‘HTTP_ACCEPT_CHARSET’
Contenido de la cabecera Accept-Charset: de la petición actual, si existe. Por ejemplo: ‘iso-8859-1,*,utf-8’.
‘HTTP_ACCEPT_ENCODING’
Contenido de la cabecera Accept-Encoding: de la petición actual, si existe. Por ejemplo: ‘gzip’.
‘HTTP_ACCEPT_LANGUAGE’
Contenido de la cabecera Accept-Language: de la petición actual, si existe. Por ejemplo: ‘en’.
‘HTTP_CONNECTION’
Contenido de la cabecera Connection: de la petición actual, si existe. Por ejemplo: ‘Keep-Alive’.
‘HTTP_HOST’
Contenido de la cabecera Host: de la petición actual, si existe.
‘HTTP_REFERER’
Dirección de la pagina (si la hay) que emplea el agente de usuario para la pagina actual. Es definido por el agente de usuario. No todos los agentes de usuarios lo definen y algunos permiten modificar HTTP_REFERER como parte de su funcionalidad. En resumen, es un valor del que no se puede confiar realmente.
‘HTTP_USER_AGENT’
Contenido de la cabecera User-Agent: de la petición actual, si existe. Consiste en una cadena que indica el agente de usuario empleado para acceder a la pagina. Un ejemplo típico es: Mozilla/4.5 (X11; U; Linux 2.2.9 i586). Entre otras opciones, puede emplear dicho valor con get_browser() para personalizar el resultado de la salida de la página en función de las capacidades del agente de usuario empleado.
‘HTTPS’
Ofrece un valor no vacío si el script es pedido mediante el protocolo HTTPS.
‘REMOTE_ADDR’
La dirección IP desde la cual está viendo la página actual el usuario.
‘REMOTE_HOST’
El nombre del host desde el cual está viendo la página actual el usuario. La obtención inversa del dns está basada en la REMOTE_ADDR del usuario.
‘REMOTE_PORT’
El puerto empleado por la máquina del usuario para comunicarse con el servidor web.
‘REMOTE_USER’
El usuario autenticado.
‘REDIRECT_REMOTE_USER’
El usuario autenticado si la petición es redirigida internamente.
‘SCRIPT_FILENAME’
La ruta del script ejecutándose actualmente en forma absoluta.
‘SERVER_ADMIN’
El valor dado a la directiva SERVER_ADMIN (de Apache) en el archivo de configuración del servidor web. Si el script se está ejecutando en un host virtual, el valor dado será el definido para dicho host virtual.
‘SERVER_PORT’
El puerto de la máquina del servidor usado por el servidor web para la comunicación. Para las configuraciones por omisión, el valor será ’80’; el empleo de SSL, por ejemplo, cambiará dicho valor al valor definido para el puerto HTTP seguro.
‘SERVER_SIGNATURE’
Cadena que contiene la versión del servidor y el nombre del host virtual que son añadidas a las páginas generadas por el servidor, si esta habilitada esta funcionalidad.
‘PATH_TRANSLATED’
Ruta de acceso basada en el sistema (no en el directorio raíz de documentos del servidor) del script actual, después de cualquier mapeo de virtual a real realizada por el servidor.
‘SCRIPT_NAME’
Contiene la ruta del script actual. Esto es de utilidad para las páginas que necesiten apuntarse a si mismas. La constante __FILE__ contiene la ruta absoluta y el nombre del archivo actual incluido.
‘REQUEST_URI’
La URI que se empleó para acceder a la página. Por ejemplo: ‘/index.html’.
‘PHP_AUTH_DIGEST’
Cuando se hace autenticación Digest HTTP, esta variable se establece para el encabezado ‘Authorization’ enviado por el cliente (el cual se debe entonces usar para hacer la validación apropiada).
‘PHP_AUTH_USER’
Cuando se hace autenticación HTTP, esta variable se establece para el nombre de usuario provisto por el usuario.
‘PHP_AUTH_PW’
Cuando se hace autenticación HTTP, esta variable se establece para la clave provista por el usuario.
‘AUTH_TYPE’
Cuando se realiza la autenticación HTTP, está variable se establece para el tipo de autenticación.
‘PATH_INFO’
Contiene cualquier información sobre la ruta proporcionada por el cliente a continuación del nombre del fichero del script actual pero antecediendo a la cadena de la petición, si existe. Por ejemplo, si el script actual se accede a través de la URL http://www.example.com/php/path_info.php/some/stuff?foo=bar, entonces $_SERVER contendrá /some/stuff.
‘ORIG_PATH_INFO’
Versión original de ‘PATH_INFO’ antes de ser procesado por PHP.
Historial de cambios
5.4.0 $HTTP_SERVER_VARS ya no está disponible debido a la eliminación de arrays grandes de registro.
5.3.0 La directiva register_long_arrays, la cual hacía que estuviera disponible $HTTP_SERVER_VARS está obsoleta.
4.1.0 Se introdujo $_SERVER, que hace obsoelto $HTTP_SERVER_VARS.
Ejemplo #1 Ejemplo de $_SERVER
<?php echo $_SERVER; ?>
El resultado del ejemplo sería algo similar a:
www.example.com
$_GET
(PHP 4 >= 4.1.0, PHP 5, PHP 7)
$_GET — $HTTP_GET_VARS — Variables HTTP GET
Descripción
Un array asociativo de variables pasado al script actual vía parámetros URL.
$HTTP_GET_VARS contiene la misma información, pero no es una superglobal. (Note que $HTTP_GET_VARS y $_GET son diferentes variables y que PHP los usa de forma diferente)
Historial de cambios
4.1.0 Se introdujo $_GET y $HTTP_GET_VARS quedó obsoleto.
Ejemplos
Ejemplo #1 Ejemplo de $_GET
<?php echo 'Hola ' . htmlspecialchars($_GET) . '!'; ?>
Asumiendo que el usuario introdujo http://example.com/?nombre=Hannes
El resultado del ejemplo sería algo similar a:
Hola Hannes!
$_POST
(PHP 4 >= 4.1.0, PHP 5, PHP 7)
$_POST — $HTTP_POST_VARS — Variables POST de HTTP
Descripción
Un array asociativo de variables pasadas al script actual a través del método POST de HTTP cuando se emplea application/x-www-form-urlencoded o multipart/form-data como Content-Type de HTTP en la petición.
$HTTP_POST_VARS contiene la misma información inicial, aunque no es una superglobal. (Observe que $HTTP_POST_VARS y $_POST son variables diferentes, por lo nque PHP las trata de forma distinta).
Historial de cambios
4.1.0 Se introdujo $_POST, por lo que $HTTP_POST_VARS quedó obsoleta.
Ejemplos
Ejemplo #1 Ejemplo de $_POST
<?php echo '¡Hola ' . htmlspecialchars($_POST) . '!'; ?>
Asumiendo que el usuario envió por el método POST nombre=Juan
El resultado del ejemplo sería algo similar a:
¡Hola Juan!