Función header() de PHP
Definición y uso
La función header() envía encabezados HTTP originales al cliente.
Es importante reconocer que se debe llamar a la función header() antes de que se envíe cualquier salida real (en PHP 4 y versiones superiores, puede usar el almacenamiento en caché de salida para resolver este problema):
<html> <?php // Error en el resultado // Ya hay salida existente antes de llamar a header() header('Location: http://www.example.com/'); ?>
Sintaxis
header(string,replace,http_response_code)
Parámetros | Descripción |
---|---|
string | Obligatorio. Especifica la cadena de encabezado que se enviará. |
replace |
Opcional. Indica si el encabezado debe reemplazar el encabezado anterior o agregar un segundo encabezado. Por defecto es true (reemplazo). false (permite múltiples encabezados del mismo tipo). |
http_response_code | Opcional. Forzar el código de respuesta HTTP a un valor especificado. (Disponible en PHP 4 y versiones superiores)} |
Sugerencias y comentarios
Comentarios:Desde PHP 4.4 en adelante, la función previene el envío de múltiples encabezados a la vez. Esto es una medida de protección contra ataques de inyección de encabezados.
Ejemplo
Ejemplo 1
<?php // Fecha en el pasado header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Cache-Control: no-cache"); header("Pragma: no-cache"); ?> <html> <body> ... ...
Comentarios:El usuario puede configurar algunas opciones para cambiar la configuración de caché predeterminada del navegador. Al enviar los encabezados anteriores, puede sobrescribir cualquier configuración de estos, forzando al navegador a no cachear!
Ejemplo 2
Sugerencia al usuario para guardar un archivo PDF generado (el encabezado Content-Disposition se utiliza para proporcionar un nombre de archivo recomendado y hacer que el navegador muestre un cuadro de diálogo de guardado):
<?php header("Content-type:application/pdf"); // El archivo se llamará downloaded.pdf header("Content-Disposition:attachment;filename='downloaded.pdf'"); // La fuente PDF está en original.pdf readfile("original.pdf"); ?> <html> <body> ... ...
Comentarios:Microsoft IE 5.5 tiene un bug que impide que funcione este mecanismo. Actualizando a Service Pack 2 o una versión superior, se puede resolver este bug.