PHP  »  Articoli  »  Programmazione Php 

Header HTTP e PHP: come gestirli

di: Claudio Garau     15 Gennaio 2009

Funzione header() e risoluzione dei problemi di invio delle intestazioni

Si immagini ora di voler eseguire un codice simile al seguente:

<?php
# messaggio per il reindirizzamento della pagina
echo "la pagina verrà rendirizzata tra 10 secondi";
# intervallo prima del reindirizzamento
$intervallo = 10;
# url di destinazione
$destinazione = "http://www.miosito.it";
# reindirizzamento
header('Refresh:' . $intervallo . ';' . $destinazione);
?>

L'esecuzione del codice appena proposto produrrà una notifica di errore: Warning: Cannot modify header information - headers already sent by..; si tratta di un errore dovuto al fatto che se si vuole utilizzare la funzione header() per il rindirizzamento questa non deve essere preceduta da alcun output (nessuna stringa alfanumerica, nessun tag HTML e addirittura nessuno spazio vuoto). Come evitare questo tipo di errore?

In un'applicazione da concepire da zero la soluzione è semplice, conoscendo il particolare funzionamento della funzione header() si evita di produrre output prima della sua chiamata; questa procedura può essere però di difficile utilizzo per l'aggiornamento di script preesistenti. In quest'ultimo caso è però possibile ricorrere alle cosiddette funzioni per il controllo del buffer; il semplice esempio seguente permetterà di chiarire le idee:

<?php
# controllo del buffer
ob_start();
$intervallo = 10;
$destinazione = "http://www.miosito.it";
echo "la pagina verrà rendirizzata tra 10 secondi";
header('Refresh:' . $intervallo . ';' . $destinazione);
# interruzione del buffer e liberazione del contenuto
ob_end_flush();
?>

In questo caso la funzione ob_start() si occupa di trattenere il flusso degli headers HTML fino al loro rilascio tramite la funzione ob_end_flush();, così l'istruzione per il rindirizzamento del percorso di destinazione potrà essere eseguita senza che venga prodotto in precedenza alcun output ed evitando la notifica di errori relativi all'impossibilità di modificare le informazioni contenute nelle intestazioni.

È però bene tenere conto che quella esposta è soltanto una soluzione tampone, per la creazione dei un'applicazione ben fatta si deve sempre tener conto del funzionamento di header() evitando di produrre output prima della sua chiamata, anche per evitare di appesantire inutilmente il listato.

Conclusioni

PHP integra numerose funzioni per la gestione degli headers HTTP che sono delle informazioni scambiate da client e server durante le operazioni di richiesta e di risposta; ogni pagina che invia un input produce degli headers così come ogni risorsa restituita dal Web server contiene delle informazioni che ne costituiscono l'intestazione.

Nel corso di questa breve trattazione sono state descritti alcuni casi pratici relativi alla visualizzazione degli headers HTTP, alla loro modifica e alla correzione di eventuali errori prodotti dalle operazioni di rindirizzamento delle pagine.

Guide PHP

Guida Yii Framework

Come creare applicazioni Web in modo semplice e veloce con il...

Guida Zend Framework

Diventate professionisti dello sviluppo Web. Zend Framework è lo...

Guida Applicazioni Facebook con PHP

Come realizzare un'applicazione per Facebook. Dalle basi della...

Altre guide

Newsletter @PHP

Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso PHP per Webmaster

11 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti