PHP  »  Articoli  »  Programmazione Php 

Header HTTP e PHP: come gestirli

di: Claudio Garau     15 Gennaio 2009

Gli headers (letteralmente 'intestazioni') trasmessi attraverso il protocollo HTTP (Hyper Text Transfer Protocol) non sono altro che delle informazioni prodotte dall'interazione tra il browser del client che invia delle richieste e il server che le raccoglie e invia delle risorse in risposta ad esse. PHP integra alcune funzioni utili per la gestione degli headers delle pagine Internet, nel corso di questa trattazione ne descriveremo alcune ponendo particolare attenzione agli aspetti pratici del loro utilizzo.

HTTP Request headers e response headers

Fondamentalmente esistono due tipologie di headers:

  • headers relativi alla richiesta (request headers): inviati dal browser nel momento in cui viene inviata un'interrogazione ad un Web server (prodotta per esempio in seguito al click su un link)
  • headers relativi alla risposta (response headers): inviati dal Web server al browser in risposta ad una determinata richiesta (per esempio sotto forma di comune pagina HTML)

Un modo molto semplice di visualizzare gli headers inviati in richiesta da una pagina Web è quello di utilizzare la funzione getallheaders(), messa a disposizione da PHP; questa funzione ha il compito di produrre in output un array in cui sono contenute tutte le informazioni relative agli headers inviati in input.

Si osservi l'esempio seguente:

<?php
# chiamata alla funzione per la raccolta dei request headers 
$headers = getallheaders();
# visualizzazione dei valori dell'array tramite ciclo
foreach ($headers as $name => $content)
{
  echo "[$name] = $content<br />\n";
} 
?>

Il breve codice appena proposto permette di mostrare gli headers inseriti in un array tramite la funzione getallheaders() utilizzando un semplice ciclo foreach; nella postazione in cui è stato scritto questo articolo la sua esecuzione ha restituito i seguenti risultati:

[Accept] = text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[Accept-Charset] = ISO-8859-1,utf-8;q=0.7,*;q=0.7
[Accept-Encoding] = gzip,deflate
[Accept-Language] = it-it,it;q=0.8,en-us;q=0.5,en;q=0.3
[Cache-Control] = max-age=0
[Connection] = keep-alive
[Cookie] = dbx-pagemeta=grabit:0-|1+|2-|3+|5-|6+|7+|4+&advancedstuff:0-; dbx-postmeta=grabit:0+|1+|2+|3+|4+|5+|6+&advancedstuff:0-|1-|2-
[Host] = localhost
[Keep-Alive] = 300
[Referer] = http://localhost/mail/
[User-Agent] = Mozilla/5.0 (Windows; U; Windows NT 5.0; it; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4

Sarebbe stato possibile produrre in output le stesse informazioni effettuando una stampa degli indici e dei valori contenuti nell'array con una semplice chiamata della funzione print_r():

<?php
print_r(getallheaders());
?>

getallheaders() non è altro che un alias della funzione apache_request_headers() fornita da PHP per il medesimo scopo e sostanzialmente opposta alla funzione apache_response_headers(); quest'ultima viene utilizzata per produrre un array contenente tutte le informazioni relative agli headers inviati in risposta dal Web server di seguito alla richiesta operata da un client, per utilizzarla sarà possibile modificare gli esempi fatti in precedenza sostituendola alle funzioni già utilizzate.

Di seguito è possibile visualizzare gli headers prodotti in risposta ad un richiesta lanciata verso la pagina http://it2.php.net/manual/en/function.apache-response-headers.php utilizzando Google come USER AGENT:

[Cache-Control] = HTTP/1.1 200 OK
[Date] =  Wed, 10 Dec 2008 15:53:43 GMT
[Server] =  Apache/2.0.48 (Fedora)
[X-Powered-By] =  PHP/5.1.1
[Content-language] =  en
[Set-Cookie] = LAST_LANG=en; expires=Thu, 10-Dec-2009 15:53:43 GMT; path=/; domain=.php.net
[Set-Cookie] = COUNTRY=ITA%2C194.177.96.140; expires=Wed, 17-Dec-2008 15:53:43 GMT; path=/; domain=.php.net
[Last-Modified] = Wed, 10 Dec 2008 15:45:11 GMT
[Vary] = Cookie
[Connection] = close
[Content-Type] = text/html;charset=utf-8

Guide PHP

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...

Guida PHP con Windows e IIS

Installare ambienti per lo sviluppo e la produzione di applicazioni...

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 Google AdWords Base

27 Febbraio 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

28 Marzo 2012 a Roma
Disponibilità: 7 Posti