CrazyCat Programming Factory
rendre internet plus accessible
 

Informations sur le visiteur

Logo phpCette fonction exploite les informations fournies par le navigateur afin de déterminer qui est votre visiteur.
Pour la faire fonctionner, nous avons besoin de 3 listes de données: les robots connus, les navigateurs et les systèmes d'exploitation.
Nous utiliserons des tableaux associatifs pour les robots et les navigateurs afin de ne pas utiliser le nom "brut" mais de le personnaliser.

Voici les listes:
<?
// Liste des robots connus
$st_bots = array(
   'google'=>'GoogleBot',
   'lycos'=>'Lycos.com',
   'ask jeeves'=>'Ask Jeeves',
   'slurp@inktomi'=>'Hot Bot',
   'whatuseek'=>'What You Seek',
   'is_archiver'=>'Archive.org',
   'scooter'=>'Altavista',
   'fast-webcrawler'=>'AlltheWeb',
   'grub.org'=>'Grub Client',
   'turnitinbot'=>'Turnitin.com',
   'msnbot'=>'MSN Search',
   'yahoo'=>'Yahoo! Slurp',
);
// liste des navigateurs connus
$st_browsers = array(
   'msie 6.0'=>'Microsoft Internet Explorer 6.0',
   'msie 7.0'=>'Microsoft Internet Explorer 7.0',
   'msie 5.5'=>'Microsoft Internet Explorer 5.5',
   'msie 5/mac'=>'Microsoft Internet Explorer 5 Mac',
   'firefox/1.5'=>'Firefox 1.5',
   'firefox/2'=>'Firefox 2',
   'firefox/1.0'=>'Firefox 1.0',
   'konqueror'=>'Konqueror',
   'opera'=>'Opera',
   'safari'=>'Safari',
   'netscape'=>'Netscape',
   'wget'=>'Wget',
   'seamonkey'=>'SeaMonkey',
   'lynx'=>'Lynx',
   'minimo'=>'Minimo',
   'links'=>'Links',
   'flock'=>'Flock',
);
// Liste des systèmes d'exploitation
$st_os = array(
   'Windows',
   'Macintosh',
   'Linux',
   'BSD',
   'Sun',
   'PlayStation',
   'Nokia',
   'SmartPhone',
   'OS/2',
);
?>

Les systèmes d'exploitations sont dans un tableau simple car ils sont la plupart du temps donnés en clair.

La fonction de recherche est relativement simple, elle utilise preg_match et une particularité bien précise de cette fonction: le renvoit de la chaine qui a correspondu.

function get_ua_os($user_agent) {
   global $st_bots, $st_browsers, $st_os;
   // Nous transformons les tableaux en expressions régulières
   $bots = implode("|", array_keys($st_bots));
   $browsers = implode("|", array_keys($st_browsers));
   $os = strtolower(implode("|", $st_os));
   // Nous commençons par chercher les robots
   if (preg_match("#(".$bots.")#", strtolower($user_agent), $match)) {
      $client = Array('bot'=>true, 'ua'=>$st_bots[$match[0]], 'os'=>'');
   } else {
      // Nous avons affaire à un vrai visiteur
      $client = Array('bot'=>false, 'ua' => '', 'os'=>'');
      if (preg_match("#(".$browsers.")#", strtolower($user_agent), $match)) {
         $client['ua'] = $st_browsers[$match[0]];
      }
      if (preg_match("#(".$os.")#i", $user_agent, $match)) {
         $client['os'] = $match[0];
      }
   }
   return $client;
}
?>

La fonction retourne donc un tableau de 3 éléments:
* bot => true ou false
* ua => le nom du robot ou du navigateur
* os => le système d'exploitation si ce n'est pas un robot.

La chaine $user_agent envoyée à la fonction est celle que vous pouvez obtenir en utilisant getenv('HTTP_USER_AGENT') ou $_SERVER['HTTP_USER_AGENT'].

©2006-2017 Geek Zone | eggdrop.fr | zeolia.net