Saltar a contenido

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ón GET.
  • $_POST: parámetros enviados en el envío POST.
  • $_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, como GET o POST.
  • 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 es http://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 por GET (y a no pasarle ninguno). Crea una página que tenga un enlace al script y comprueba el valor de HTTP_REFERER.