di: Claudio Garau 15 Gennaio 2009
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.
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.
Guida Yii FrameworkCome creare applicazioni Web in modo semplice e veloce con il... |
Guida Zend FrameworkDiventate professionisti dello sviluppo Web. Zend Framework è lo... |
Guida Applicazioni Facebook con PHPCome realizzare un'applicazione per Facebook. Dalle basi della... |
Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.
Iscriviti alla newsletter
|
|
Corso PHP per Webmaster11 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |