Warning: Cannot modify header information

Molto spesso programmando in php capita di incappare nel warning "Cannot modify header information - headers already sent by ...", questo capita perchč gli header vanno inviati prima di qualsiasi altro tipo di output.

Un classico esempio di codice che genererā questo warning potrebbe essere
<?php
echo "stringa";
header("Location: index.php");
?>
Anche la creazione di un cookie dopo un output HTML potrebbe generare questo avvertimento
<p>OutputHTML</p>
<?php
setcookie('nome', 1);
?>

Una possibile soluzione, oltre a quella di rivedere completamente il proprio codice č quella di sfruttare le funzioni di buffering dell'output, ob_stat() ed ob_end_flush().
<?php
// Inizializzo il buffer dell'output
ob_start();

// Output prima dell'Header
echo "Stringa";

// Header o Cookie
setcookie('nome', 1);

// Invio del buffer al client
ob_end_flush();
?>

Questo codice non produrrā nessun warning

Commenti

1. danilo (30.09.11 22:08)
mi hai salvato grazie!
2. Mauro (23.04.09 09:26)
Siiii grandioso sei un genio! avevo un costrutto case con vari header di destinazione,
ma mi dava quel maledetto errore! ma ora con ob_start() all inizio e ob_end_flush alla fine del mio codice non mi da piu problemi! evvaiiiiiiiiiiiiiiiiiiiiiii grazie milleeeeeeeeeeee
Nome:
Commento:

Non si tratta di Spam / This is not Spam