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|falseLa funzione get_browser() accetta due parametri opzionali:
$user_agent: una string che specifica lo User-Agent da analizzare. Se omesso (onull), la funzione utilizza lo User-Agent della richiesta corrente da$_SERVER['HTTP_USER_AGENT'].$return_array: un boolean. Setrue, la funzione restituisce un array associativo delle proprietà del browser. Sefalse(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.iniSenza 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,$_POSTe gli altri array incorporati. $_SERVER— legge direttamente l'intestazione rawHTTP_USER_AGENT.preg_match()— analisi personalizzata dello User-Agent tramite espressioni regolari.