W3docs

get_browser()

La funzione get_browser() in PHP restituisce informazioni sul browser dell'utente, determinate tramite l'intestazione HTTP User-Agent inviata dal browser del client al server.

Funzione PHP get_browser()

La funzione get_browser() in PHP viene utilizzata per ottenere informazioni sul browser dell'utente, determinate in base all'intestazione HTTP User-Agent inviata dal browser del client al server.

Sintassi

get_browser(?string $user_agent = null, bool $return_array = false): object|array|false

La funzione get_browser() accetta due parametri opzionali:

  • $user_agent: una string che specifica lo User-Agent da analizzare. Se omesso (o null), la funzione utilizza lo User-Agent della richiesta corrente da $_SERVER['HTTP_USER_AGENT'].
  • $return_array: un boolean. Se true, la funzione restituisce un array associativo delle proprietà del browser. Se false (impostazione predefinita), restituisce un object con gli stessi dati come proprietà.

Valore restituito: un object o array di capacità, oppure false in caso di errore.

Prerequisito: browscap.ini

get_browser() non rileva nulla autonomamente — cerca lo User-Agent in un database di browser capabilities chiamato browscap.ini. È necessario scaricare quel file e indicarlo in php.ini tramite la direttiva browscap:

; in php.ini
browscap = /path/to/browscap.ini

Senza questa direttiva impostata, la funzione restituisce false ed emette un avviso. Poiché la tabella di ricerca è grande e deve essere analizzata, chiamare get_browser() comporta un overhead notevole — questo è il motivo principale per cui le applicazioni moderne la evitano.

Restituire un array

Passa true come secondo argomento per ottenere un array associativo. Questa è la forma più semplice da scorrere o esaminare con print_r():

<?php
$browser = get_browser(null, true);
print_r($browser);
?>

Un risultato tipico (abbreviato) per una richiesta di Chrome su desktop appare così:

Array
(
    [browser_name_pattern] => *mozilla/5.0 (*windows nt 10.0*) applewebkit*chrome*
    [parent]    => Chrome 120.0
    [platform]  => Win10
    [browser]   => Chrome
    [version]   => 120.0
    [majorver]  => 120
    [minorver]  => 0
    [cookies]   => 1
    [javascript] => 1
    [frames]    => 1
    ...
)

Le chiavi comuni includono browser, version, majorver, minorver, platform, parent, cookies, javascript, frames, iframes, tables e la regex usata per il confronto, browser_name_pattern. Le capacità di tipo boolean vengono restituite come stringhe "1" (true) o "0"/vuoto (false).

Restituire un object (predefinito)

Quando si omette il secondo argomento, si ottiene un object e si leggono le capacità come proprietà:

<?php
$browser = get_browser();
echo "Browser: {$browser->browser}\n";
echo "Version: {$browser->version}\n";
echo "Platform: {$browser->platform}\n";
?>

Costruire un messaggio leggibile

<?php
$browser = get_browser(null, true);
echo "You are using " . $browser['browser']
   . " version " . $browser['version']
   . " on " . $browser['platform'] . ".";
?>

Questo produce un output simile a You are using Chrome version 120.0 on Win10., basato sull'intestazione User-Agent della richiesta di risposta HTTP.

Analizzare uno User-Agent specifico

Non è necessario affidarsi alla richiesta corrente — puoi passare qualsiasi stringa User-Agent direttamente, il che è utile per i test o l'analisi dei log:

<?php
$ua = "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15";
$browser = get_browser($ua, true);
echo $browser['platform'];   // e.g. iOS
?>

Gestire i fallimenti

Poiché la funzione restituisce false quando browscap non è configurato, verifica sempre prima di leggere le proprietà:

<?php
$browser = get_browser(null, true);

if ($browser === false) {
    // Fall back to the raw header
    echo $_SERVER['HTTP_USER_AGENT'] ?? 'Unknown browser';
} else {
    echo $browser['browser'] . ' ' . $browser['version'];
}
?>

Conclusione

La funzione get_browser() è uno strumento utile per ottenere informazioni sul browser dell'utente in PHP, che può essere utilizzato per ottimizzare l'esperienza utente o per scopi di debug. È importante notare che la funzione dipende dall'intestazione User-Agent inviata dal browser, che può essere manipolata dall'utente o da un attore malintenzionato. Pertanto, le informazioni restituite dalla funzione devono essere trattate come potenzialmente inaffidabili e non devono essere utilizzate per scopi di sicurezza. Inoltre, a causa dell'overhead delle prestazioni e del requisito di un file esterno browscap.ini, le applicazioni moderne preferiscono spesso analizzare direttamente l'intestazione User-Agent o utilizzare librerie dedicate.

Funzioni correlate

  • Superglobali PHP$_SERVER, $_GET, $_POST e gli altri array incorporati.
  • $_SERVER — legge direttamente l'intestazione raw HTTP_USER_AGENT.
  • preg_match() — analisi personalizzata dello User-Agent tramite espressioni regolari.

Practice

Pratica
Qual è la funzione di get_browser() in PHP?
Qual è la funzione di get_browser() in PHP?
Was this page helpful?