Dans un contexte d'application ou de site web où la compatibilité du fureteur doit être vérifiée, on sait qu'il se présente au serveur en envoyant une chaîne de caractère qu'on appelle "User Agent" et qu'on peut la récupérer en PHP par $_SERVER['HTTP_USER_AGENT'].
Par exemple, celui du fureteur que j'utilise actuellement est :
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.4) Gecko/2008111217 Fedora/3.0.4-1.fc10 Firefox/3.0.4
Vous pouvez connaître facilement votre user agent ici.
Si on veut extraire les différentes parties, ça peut être un peu compliqué. On pourrait utiliser une classe PHP comme Browser Detect, ou encore configurer PHP avec browscap.ini pour utiliser la fonction native get_browser(). C'est ce que nous allons faire.
Pour l'installer :
- rendez-vous à la page de téléchargement
- téléchargez le fichier php_browscap.ini (assurez-vous de prendre celui pour PHP)
- vous devez le déposer sur votre serveur:
- Linux : n'importe où, par exemple, dans le répertoire "extra" (voir plus bas)
- Windows : selon ce que j'ai testé, il semble y avoir une limitation et on doit placer ce fichier dans C:\WINDOWS\system32\inetsrv\
- Linux : n'importe où, par exemple, dans le répertoire "extra" (voir plus bas)
- ouvrez votre fichier php.ini
- repérez la ligne de configuration [browscap]
- entrez le chemin absolu qui pointe vers le fichier .ini. Par exemple :
[browscap]
browscap = C:\WINDOWS\system32\inetsrv\php_browscap.ini
ou
[browscap]
browscap = extra/browscap.ini - Redémarrez Apache
Il faut vérifier si PHP en tient compte. Mais attention, la ligne suivante vous indiquera si la configuration est trouvée, mais pas si elle est fonctionnelle (ça indiquera "Configuré" si un chemin a été inscrit).
echo get_cfg_var('browscap') ? 'Configuré' : 'Pas configuré';Appelez maintenant la fonction native get_browser(). Le premier paramètre est le user agent à évaluer. Si null est passé, celui par défaut sera utilisé (la variable serveur HTTP_USER_AGENT). Le deuxième permet d'indiquer comment les parties extraites sont retournées. True retourne un tableau au lieu d'un objet stdClass (notation flèche).
$info = get_browser(null, true);Finalement, vous devrez prévoir une maintenance périodique sur ce fichier pour le mettre à jour avec les plus récentes versions de fureteurs connus, obscurs et ceux à venir.
# voir toutes les valeurs du tableau
print_r($info);
# une valeur précise
echo $info['browser'];
echo $info['version'];