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.