INDIVIDUARE IL BROWSER DELL' UTENTE
by Michele Cotrufo m.cotrufo@email.it

Ogni qualvolta un utente visita una pagina del vostro sito, egli invia una richiesta in formato HTTP al server sul quale risiede il vostro sito. In questa stringa, oltre a trovarsi il nome della pagina richiesta dall'utente, ci sono molte informazioni sul computer di questi, come sistema operativo e browser utilizzato. Analizzando questa stringa, quindi, si è in grado di stabilire il browser dell'utente.

Ecco un esempio di richiesta HTTP:

GET /sito/index.php HTTP/1.1" 200 4615 "http://localhost/sito/index.php" "Mozilla/5.0 (Windows; U; Windows NT 5.1; it-IT; rv:1.7.8) Gecko/20050511 Firefox/1.0.4"

Tra le varie informazioni contenute, quella che ci interessa è:

Mozilla/5.0 (Windows; U; Windows NT 5.1; it-IT; rv:1.7.8) Gecko/20050511 Firefox/1.0.4

Qui sono contenute informazioni sull'OS e il browser dell'utente.
Da una prima lettura balza subito all'occhio Firefox/1.0.4. Abbamo dunque stabilito che questo utente Usa Firefox. Ora è necessario creare una funzione che analizzi la stringa e stabilisca automaticamente il browser dell'utente.

La stringa che dovremo esaminare è contenuta nell indice HTTP_USER_AGENT di $_SERVER, perciò potremo ottenerla in qualsiasi momento usando $_SERVER['HTTP_USER_AGENT']

Quindi, la nostra funzione esaminerà questa stringa verificando se in essa è contenuta una parola che identifica un browser. Per comodità, creiamo un array nel quale ogni chiave è il nome di un browser, e il relativo valore è costituito dalla parola o dalle parole che lo identificano.
Per esempio, alla chiave "Netscape" corrisponde un valore "Nav|Gold|x11|Netscape", questo perchè la presenza di una qualsiasi di queste parole identifica il browser. ( il carattere | funge da OR). Dopodiche con un foreach esaminiamo tutti i valori dell'array e, con la funzione eregi, verifico la presenza del valore nella stringa. Se il valore è presente, restituisco la chiave (ovvero il nome edl browser). Se non viene trovato nessun browser, il ciclo foreach finisce e la funzione restituisce "Altro", in quanto non si è stati in grado di stabilire il browser.
Ecco il codice

<?
function GetBrowser(){
    $browser = array("Internet Explorer" => "MSIE",
             "FireFox" => "Firefox",
             "Lynx" => "Lynx",
             "Opera" => "Opera",
             "WebTV" => "WebTV",
             "Konqueror" => "Konqueror",
             "Bot" => "bot|Google|slurp|scooter|spider|infoseek",
             "Netscape" => "Nav|Gold|x11|Netscape",
            );
    
    foreach($browser as $chiave => $valore){
        if(eregi($valore, $_SERVER["HTTP_USER_AGENT"])){
            return $chiave;
        }
    }

    return "Altro";
}    
?>

La si può utilizzare cosi:

<?
echo GetBrowser();
?>


Per informazioni e chiarimenti scrivetemi!

Michele Cotrufo - m.cotrufo@email.it