In PHP gli header HTTP andrebbero sempre impostati seguendo una procedura specifica.
È sempre consigliato verificare che gli header non siano stati già impostati per non incorrere in un errore:
if (!headers_sent()) {
header('Location: http://www.example.com/');
exit;
}
La funzione headers_sent() può anche essere utilizzata a scopo di debugging leggendo i suoi due parametri opzionali, ossia il nome del file ed il numero di riga in cui gli header sono già stati impostati. Tuttavia, come ricorda la documentazione:
Note that $filename and $linenum are passed in for later use. Do not assign them values beforehand.
if (!headers_sent($filename, $linenum)) {
header('Location: http://www.example.com/');
exit;
} else {
die("Headers already sent in $filename on line $linenum");
}