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 2972 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 261 articles
|BIO_PSEUDO|
Commentaires récents

Publié par bob le poisson dans java

Bonjour, votre script est tres bien mais attention l'utilisation du mot cle static sur la methode scale(BufferedImage bImage, double factor) est inutile et empeche de liberer la ressource.

Publié par hozin2003 dans CMS

merci, c'est mon problème et voila j'ai trouvé la solution merci et voila un bon pas pour un débutant

Publié par Broker dans logiciel

C'est impressionnant, ca va devenir difficile de se cacher !

Publié par Fobec dans php5

Bonjour,
vous pouvez poster un message sur le forum, la communaut vous donnera un coup de main pour la mise en place du script.

Publié par Fobec dans tuto

Je ne maitrise pas du tout WordPress ...
un plugin a l'air sympa http://wordpress.org/extend/plugins/scripts-gzip/, en parcourant le code source, j'ai vu des pistes pour integrer Gzip sous WordPre...