Funzione header() di PHP

Definizione e uso

La funzione header() invia all'utente intestazioni HTTP originali.

È importante notare che la funzione header() deve essere chiamata prima di inviare qualsiasi output reale (in PHP 4 e versioni superiori, è possibile risolvere questo problema utilizzando la cache di output):

<html>
<?php
// Errore nel risultato
// Esiste già output prima della chiamata a header()
header('Location: http://www.example.com/');
?>

Sintassi

header(string,replace,http_response_code)
Parametro Descrizione
string Obbligatorio. Specifica la stringa dell'intestazione da inviare.
replace

Opzionale. Indica se l'intestazione sostituisce quella precedente o aggiunge una seconda intestazione.

Predefinito è true (sostituzione). false (permite più intestazioni dello stesso tipo).

http_response_code Opzionale. Forza il codice di risposta HTTP a un valore specificato. (Disponibile a partire da PHP 4)

Suggerimenti e commenti

Commento:Dalla versione PHP 4.4, la funzione impedisce di inviare più intestazioni contemporaneamente. Questo è un misura di protezione contro gli attacchi di注入 di intestazione.

Esempio

Esempio 1

<?php
// Data nel passato
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");

?>
<html>
<body>
...
...

Commento:L'utente potrebbe impostare alcune opzioni per modificare le impostazioni di cache predefinite del browser. Invio degli intestazioni sopra indicate, è possibile sovrascrivere qualsiasi queste impostazioni, costringendo il browser a non effettuare la cache!

Esempio 2

Suggerire all'utente di salvare un file PDF generato (l'intestazione Content-Disposition viene utilizzata per fornire un nome di file raccomandato e costringere il browser a visualizzare una finestra di dialogo di salvataggio):

<?php
header("Content-type:application/pdf");
// Il file sarà chiamato downloaded.pdf
header("Content-Disposition:attachment;filename='downloaded.pdf'");
// PDF sorgente in original.pdf
readfile("original.pdf");
?>
<html>
<body>
...
...

Commento:Internet Explorer 5.5 di Microsoft contiene un bug che blocca questo meccanismo. Aggiornando a Service Pack 2 o versione successiva, è possibile risolvere questo bug.