get_browser()
La fonction get_browser() en PHP permet d'obtenir des informations sur le navigateur de l'utilisateur à partir de l'en-tête HTTP User-Agent.
Fonction PHP get_browser()
La fonction get_browser() en PHP permet d'obtenir des informations sur le navigateur de l'utilisateur, déterminées à partir de l'en-tête HTTP User-Agent envoyé par le navigateur du client au serveur.
Syntaxe
get_browser(?string $user_agent = null, bool $return_array = false): object|array|falseLa fonction get_browser() accepte deux paramètres optionnels :
$user_agent: une string spécifiant le User-Agent à analyser. Si omis (ounull), la fonction utilise le User-Agent de la requête en cours depuis$_SERVER['HTTP_USER_AGENT'].$return_array: un boolean. Sitrue, la fonction retourne un array associatif des propriétés du navigateur. Sifalse(valeur par défaut), elle retourne un object avec les mêmes données en tant que propriétés.
Valeur de retour : un object ou array de capacités, ou false en cas d'échec.
Prérequis : browscap.ini
get_browser() ne détecte rien par elle-même — elle recherche le User-Agent dans une base de données de capacités du navigateur appelée browscap.ini. Vous devez télécharger ce fichier et indiquer son chemin dans php.ini via la directive browscap :
; in php.ini
browscap = /path/to/browscap.iniSans cette directive configurée, la fonction retourne false et émet un avertissement. Comme la table de recherche est volumineuse et doit être analysée, l'appel à get_browser() engendre une surcharge notable — c'est la principale raison pour laquelle les applications modernes l'évitent.
Retourner un array
Passez true comme second argument pour obtenir un array associatif. C'est la forme la plus simple à parcourir ou à inspecter avec print_r() :
<?php
$browser = get_browser(null, true);
print_r($browser);
?>Un résultat typique (abrégé) pour une requête Chrome sur ordinateur ressemble à ceci :
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
...
)Les clés courantes incluent browser, version, majorver, minorver, platform, parent, cookies, javascript, frames, iframes, tables, et l'expression régulière utilisée pour la correspondance, browser_name_pattern. Les capacités de type boolean sont renvoyées sous forme de chaînes "1" (vrai) ou "0"/vide (faux).
Retourner un object (par défaut)
Lorsque vous omettez le second argument, vous obtenez un object et lisez les capacités en tant que propriétés :
<?php
$browser = get_browser();
echo "Browser: {$browser->browser}\n";
echo "Version: {$browser->version}\n";
echo "Platform: {$browser->platform}\n";
?>Construire un message lisible
<?php
$browser = get_browser(null, true);
echo "You are using " . $browser['browser']
. " version " . $browser['version']
. " on " . $browser['platform'] . ".";
?>Ce code produit quelque chose comme You are using Chrome version 120.0 on Win10., basé sur l'en-tête User-Agent de la réponse HTTP.
Analyser un User-Agent spécifique
Vous n'êtes pas obligé de vous fier à la requête en cours — vous pouvez passer n'importe quelle string User-Agent vous-même, ce qui est pratique pour les tests ou l'analyse de journaux :
<?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
?>Se prémunir contre les échecs
Étant donné que la fonction retourne false lorsque browscap n'est pas configuré, vérifiez toujours avant de lire les propriétés :
<?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'];
}
?>Conclusion
La fonction get_browser() est un outil utile pour obtenir des informations sur le navigateur de l'utilisateur en PHP, ce qui peut servir à optimiser l'expérience utilisateur ou à des fins de débogage. Il est important de noter que la fonction dépend de l'en-tête User-Agent envoyé par le navigateur, qui peut être manipulé par l'utilisateur ou un acteur malveillant. Par conséquent, les informations renvoyées par la fonction doivent être considérées comme potentiellement peu fiables et ne doivent pas être utilisées à des fins de sécurité. De plus, en raison de la surcharge de performance et de la nécessité d'un fichier browscap.ini externe, les applications modernes préfèrent souvent analyser directement l'en-tête User-Agent ou utiliser des bibliothèques dédiées.
Fonctions associées
- Superglobales PHP —
$_SERVER,$_GET,$_POSTet les autres tableaux intégrés. $_SERVER— lire directement l'en-tête brutHTTP_USER_AGENT.preg_match()— créer votre propre analyse de User-Agent avec des expressions régulières.