7.PHP pour le web
7.2.Les variables prédéfinies
7.2.4.Détection du navigateur (User-Agent)
7.2.4.1.Présentation
La variable $_SERVER["HTTP_USER_AGENT"] peut être mise à profit pour aider à la détection du navigateur et du système d'exploitation utilisé par votre visiteur.
Par exemple:
Votre navigateur a pour "signature":
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) Chrome/116.0.1938.76 Safari/537.36
comme l'indique le code suivant:
<?php
echo "Votre navigateur a pour \"signature\":<br />".
htmlEntities($_SERVER["HTTP_USER_AGENT"]);
?>
D'autres navigateurs peuvent retourner des chaînes du genre:
- Mozilla/4.7 [en] (X11; I; Linux 2.2.5-15 i586)
- Mozilla/4.6 [fr] (WinNT; I)
- Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)
- Opera/5.02 (Windows 98; U) [en]
- Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0)
- Mozilla/4.5 [fr] (Macintosh; I; PPC)
|
|
- Notez que cette information peut être facilement usurpée. N'importe qui peut utiliser un navigateur et faire croire qu'il en utilise un autre (ce qui toutefois n'a pas grand interêt).
|
Malheureusement, le format de cette chaîne de caractères n'est pas normalisé, pour l'exploiter, il faut donc s'adapter.
7.2.4.2.Détection du navigateur utilisé
De l'échantillon précédent, on peut "deviner" que le navigateur est:
- Internet Explorer, si le User-Agent contient la chaîne "MSIE" (suivi du numéro de version d'I.E)
- Netscape, si le User-Agent contient la chaîne "Mozilla/" (suivi du numéro de version) mais ne contient pas "MSIE"
- Opera, si le User-Agent contient la chaîne "Opera/" (suivi du numéro de version)
|
On peut donc se risquer à déterminer le type de navigateur utilisé avec un code du genre:
<?php
echo 'Vous utilisez un navigateur de type: ';
if (preg_match('/MSIE/', $_SERVER["HTTP_USER_AGENT"])) {
echo "Internet explorer";
} else if (preg_match('/^Mozilla\//', $_SERVER["HTTP_USER_AGENT"])) {
echo "Netscape";
} else if (preg_match('/^Opera\//', $_SERVER["HTTP_USER_AGENT"])) {
echo "Opera";
} else {
echo "inconnu";
}
?>
Qui pourrait retourner:
Vous utilisez un navigateur de type: Netscape
7.2.4.3.Détection du système d'exploitation
La chaîne User-Agent contient généralement cette information mais pour l'extraire le plus simple est encore de prendre la liste des systèmes d'exploitation possibles et voir s'il est dans la chaîne User-Agent (puisqu'il est difficile, à priori, de savoir à quel endroit de la chaîne se trouve cette information). C'est ce qui est fait dans le script suivant:
<?php
echo 'Vous utilisez un systeme d\'exploitation de type: ';
if (preg_match('/Linux/', $_SERVER["HTTP_USER_AGENT"])) {
echo "linux (un excellent choix)";
} else if (preg_match('/WinNT/', $_SERVER["HTTP_USER_AGENT"])||preg_match('/Windows NT/', $_SERVER["HTTP_USER_AGENT"])) {
echo "Windows NT";
} else if (preg_match('/Windows 98/', $_SERVER["HTTP_USER_AGENT"])||preg_match('/Win98/', $_SERVER["HTTP_USER_AGENT"])) {
echo "Windows 98";
} else if (preg_match('/Windows 95/', $_SERVER["HTTP_USER_AGENT"])||preg_match('/Win95/', $_SERVER["HTTP_USER_AGENT"])) {
echo "Windows 95";
} else if (preg_match('/Macintosh/', $_SERVER["HTTP_USER_AGENT"])||preg_match('/Mac_PowerPC/', $_SERVER["HTTP_USER_AGENT"])) {
echo "un OS pour Mac (avec un peu de chance il s'agit de Mac OS X)";
} else {
echo "Pas Glop, je ne connais pas cet OS";
}
?>
Qui pourrait retourner:
Vous utilisez un systeme d'exploitation de type: Pas Glop, je ne connais pas cet OS