La causa di questo errore ricorrente (per i principianti come me) è che la funazione Header non accetta nessun tipo di output prima della sua chiamata.
Ad esempio nel seguente codice:
- <?php
- //riga vuota
- header ("Location:redirect.php");
- ?>
- <?php
- echo "sono un output";
- header ("Location:redirect.php");
- ?>
Come si risolve?
Possiamo risolvere il problema utilizzando l'output buffering il quale permette di inviare linee (compresi i cookie), anche dopo che si invia il contenuto del corpo, al prezzo del rallentamento della produzione dell’output PHP.
Tale funzione può essere attivata direttamente dal file php.ini , oppure possiamo attuvarlo a run time con la funzione ob_start(); che possiamo inserire all'inizio del nostro script.
Per svuotare il buffer dopo la chiamata all'Header possiamo utilizzare la funzione ob_end_flush(); che ci permette di evitare un overflow del buffer.
- <?php
- ob_start();
- echo "sono un output";
- header ("Location:redirect.php");
- ob_end_flush();
- ?>
Spero sia tutto.
Nessun commento:
Posta un commento