Publié le 17/12/2010
Auteur fobec
Réseaux sociaux
0 partages
0 tweets
0 plus
0 commentaires

Detecter le systeme d'exploitation a partir du User Agent

Lors d'une requête HTTP, des données sont automatiquement transmises au serveur web. En PHP, la variable $_SERVER['HTTP_USER_AGENT'] contient le type de navigateur et le système d'exploitation du navigateur internet.

Parser le User Agent

La class ParseUserAgent est un exemple pour extraire le système d'exploitation à partir de la variable User Agent.
<?php
 
class ParseUserAgent {
    /**
     * Principaux Système d'exploitation
     * @var array
     */
    private static $patternList=array(
            "Win16"=>"Windows 3.11",
            "(Windows 95)|(Win95)|(Windows_95)"=>"Windows 95",
            "(Windows 98)|(Win98)"=>"Windows 98",
            "(Windows NT 5.0)|(Windows 2000)"=>"Windows 2000",
            "(Windows NT 5.1)|(Windows XP)"=>"Windows XP",
            "(Windows NT 5.2)"=>"Windows Server 2003",
            "(Windows NT 6.0)"=>"Windows Vista",
            "(Windows NT 7.0)"=>"Windows Seven",
            "(Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT)"=>"Windows NT 4.0",
            "OpenBSD"=>"Open BSD",
            "Ubuntu"=>"Linux Ubuntu",
            "(Linux)|(X11)"=>"Linux",
            "Googlebot"=>"Crawler Google"
    );
 
/**
 * Extraire l'OS
 * @param string $useragent
 * @return string Nom du système d'exploitation
 */
    public static function getOSName($useragent) {
        $osName='unknown';
 
    /** Si useragent n'est pas renseigné,détecter à partir du navigateur */
        if (!isset($useragent)||strlen($useragent)<5) {
            if (isset($_SERVER['HTTP_USER_AGENT'])) {
                $useragent= $_SERVER['HTTP_USER_AGENT'];
            } else {
                $useragent='';
            }
        }
        /** Tester tous les couples pattern=>nom d'OS **/
        foreach(self::$patternList as $pattern=>$name) {
            if (eregi($pattern,$useragent)) {
                $osName=$name;
                break;
            }
        }
       return $osName;
    }
}
?>

Exemple d'OS à partir du User Agent

Détecter le système d'exploitation d'un visiteur

<?php
echo "Le systeme d'exploitation de l'internaute est: ".ParseUserAgent::getOSName('');
?>
affiche par exemple
Le systeme d'exploitation de l'internaute est: Windows Seven

Détecter le crawler de Google

<?php
$ua='Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)';
echo 'UserAgent correspond a :'.ParseUserAgent::getOSName($ua);
?>
 
résultat de l'ua
L'OS de l'UserAgent est :Crawler Google

La class ParseUserAgent est un exemple d'extraction du système d'exploitation à partir du UserAgent. Bien sur, les données peuvent être affinées et améliorées. Le but est de montrer la quantité d'information disponible dans l'UserAgent envoyé par le navigateur internet.

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
php5 - class
Mise a jour
17/12/2010
Visualisation
vu 3480 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 261 articles
|BIO_PSEUDO|
Commentaires récents

Publié par max dans java

est que ce framework fonctionne pour une application web ?

Publié par rsuinux dans php5

Merci pour cet article.
Cela m'a debloque pour sqlite3 sur openwrt :)
Cordialement.

Publié par Coll dans java

Excuse moi, mais pourrais tu expliquer un peu plus precisement ce que tu fais lorsque tu convertis en gris je comprends l'idee mais pas ce que chaque action fait precisement et le cacth a la fin. Parc...

Publié par Alpcom dans java

Salut , juste signaler une petite faute de frappe dans mouseDragged
ce n'est pas int y = p.y - newPos.x;
int y = p.y - newPos.y; !! des comportements curieux apparaissaient sinon merci beaucoup...

Publié par agence cms open source dans tuto

Vu la multitude des outils de gestion de contenu Open Source, sélectionner l'un d'entre eux exige de réaliser une comparaison fine. Les lecteurs défendent les raisons de leurs cho...