Saltar a contenido

Cabeceras de respuesta

Las cabeceras deben ser lo primero que se devuelve al navegador. Se envían mediante la función header(cadena). A través de las cabeceras es posible configurar el tipo de contenido, establecer el tiempo de expiración, redirigir al navegador, especificar códigos de error HTTP, entre otras configuraciones.

<?php header("Content-Type: text/plain"); ?>
<?php header("Location: http://www.ejemplo.com/inicio.html");
exit(); 

Configuración y depuración

La configuración de las cabeceras se puede verificar en las herramientas para desarrolladores de los navegadores web, accediendo a Developer Tools --> Network --> Headers.

Cabecera Aules
Cabecera Aules

Es común modificar las cabeceras para controlar el comportamiento de la caché, ya sea para evitar que se guarde o para forzar su actualización:

<?php
header("Expires: Sun, 31 Jan 2021 23:59:59 GMT");

// Expiración en tres horas
$now = time();
$horas3 = gmstrftime("%a, %d %b %Y %H:%M:%S GMT", $now + 60 * 60 * 3);
header("Expires: {$horas3}");

// Expiración en un año
$anyo1 = gmstrftime("%a, %d %b %Y %H:%M:%S GMT", $now + 365 * 86440);
header("Expires: {$anyo1}");

// Marcado como expirado (fecha en el pasado)
$pasado = gmstrftime("%a, %d %b %Y %H:%M:%S GMT");
header("Expires: {$pasado}");

// Evitar caché en el navegador o en el proxy
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
  • En el segundo ejemplo de configuración de caché se ajustó el cálculo para un año completo a 365 días en segundos: 86400 segundos por día.
  • Pragma y Cache-Control permiten garantizar que tanto el navegador como el proxy deshabiliten la caché, siendo particularmente útil para entornos donde se desea evitar la retención de información obsoleta.

Actividades

  • 📝 AC 407. (RA4 / CE4c / IC1 / 3p) - Desde la secretaria del centro se solicita el desarrollo de un script que redirija al usuario a diferentes páginas dependiendo de la hora del día. En una deberás poner el horario de mañanas y en otra el de tardes.

  • 🔬 AP 408. (RA4 / CE4c / IC1 / 3p) - Desde la secretaría del centro necesitan saber cuándo se ha modificado cierto fichero. Para ello, se debe implementar un script PHP que utilice la cabecera Last-Modified para gestionar la caché de manera efectiva y responder de forma condicional a las solicitudes del cliente.

    Ayuda

    Hazte uso de un fichero que puedas modificar fácilmente, por ejemplo un fichero de texto. En la unidad de trabajo 6 veremos cómo modificarlos mediante PHP, ahora debes hacerlo a mano.

  • 🧪 PR 409. (RA4 / CE4a CE4b CE4c / IC2 / 5p) - Necesitamos recoger los datos de los trabajadores. Para ello se pide crear un formulario web que permita al usuario introducir varios datos de contacto como nombre, email y teléfono. Una vez que el formulario se envíe, estos datos se recogerán en PHP, se convertirán en un formato CSV y se presentará un enlace o botón para descargar el archivo CSV generado.

    Ayuda

    En el caso de servir un archivo CSV para descarga, es importante establecer el Content-Type. Además, para forzar la descarga del archivo en lugar de que se muestre en el navegador, se utiliza la cabecera Content-Disposition con la directiva attachment.