Variables de servidor¶
PHP almacena la información del servidor y de las peticiones HTTP en seis arrays globales:
$_ENV
: información sobre las variables de entorno.$_GET
: parámetros enviados en la peticiónGET
.$_POST
: parámetros enviados en el envíoPOST
.$_COOKIE
: contiene las cookies de la petición, las claves del array son los nombres de las cookies.$_SERVER
: información sobre el servidor.$_FILES
: información sobre los ficheros cargados via upload.
Si nos centramos en el array $_SERVER
podemos consultar las siguientes propiedades:
PHP_SELF
: nombre del script ejecutado, relativo al document root (p.ej:/tienda/carrito.php
)SERVER_SOFTWARE
: software del servidor en uso (p.ej: Apache).SERVER_NAME
: nombre del dominio o alias DNS (p.ej: www.gva.es).REQUEST_METHOD
: método de solicitud, comoGET
oPOST
.REQUEST_URI
: URI de la solicitud sin el dominio.QUERY_STRING
: todo lo que va después de?
en la URL (p.ej:heroe=Batman&nombre=Bruce
)
Más información en la documentación oficial
<?php
echo $_SERVER["PHP_SELF"]."<br>"; // /u4/401server.php
echo $_SERVER["SERVER_SOFTWARE"]."<br>"; // Apache/2.4.46 (Win64) OpenSSL/1.1.1g PHP/7.4.9
echo $_SERVER["SERVER_NAME"]."<br>"; // localhost
echo $_SERVER["REQUEST_METHOD"]."<br>"; // GET
echo $_SERVER["REQUEST_URI"]."<br>"; // /u4/401server.php?heroe=Batman
echo $_SERVER["QUERY_STRING"]."<br>"; // heroe=Batman
Propiedades relacionadas¶
Otras propiedades relacionadas que puede incluir $_SERVER
:
PATH_INFO
: ruta extra tras la petición. Si la URL eshttp://www.php.com/php/pathInfo.php/algo/cosa?foo=bar
, entonces$_SERVER['PATH_INFO']
será/algo/cosa
.REMOTE_HOST
: nombre de host que realizó la petición (si está configurado en el servidor).REMOTE_ADDR
: dirección IP del cliente que hizo la solicitud.AUTH_TYPE
: tipo de autenticación utilizado (p.ej: Basic).REMOTE_USER
: nombre del usuario autenticado, si está configurado en el servidor.
Apache genera una clave para cada cabecera HTTP en mayúsculas, reemplazando los guiones por subrayados:
HTTP_USER_AGENT
: información sobre el agente del cliente, típicamente el navegador.HTTP_REFERER
: URL de la página desde la que se hizo la petición (si está disponible).
<?php
echo $_SERVER["HTTP_USER_AGENT"]."<br>";
// Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
Recuerda
Es importante recordar que no todos los valores de $_SERVER
están siempre disponibles, ya que dependen de la configuración del servidor y del tipo de solicitud realizada.
Actividad¶
AC 401. (RA4 / CE4a / IC1 / 3p) - Queremos comprobar la configuración de nuestro servidor, y para ello, vamos a comprobar que valores muestra
$_SERVER
al ejecutarlo en nuestra instalación. Para ello, prueba a pasarle parámetros porGET
(y a no pasarle ninguno). Crea una página que tenga un enlace al script y comprueba el valor deHTTP_REFERER
.