> Identifier le navigateur en php avec http_user_agentIdentifier le navigateur du visiteur est assez simple avec php, en exploitant la variable HTTP_USER_AGENT. Cette variable retourne une chaine contenant toutes les informations utiles concernant le navigateur, dont son nom et sa version.
Une fonction php est d'ailleurs toute prête à vous y aider : get_browser. Mais hélas elle s'appuie sur un fichier de signature de navigateur qui n'est pas installé par défaut avec php, mais que vous devez obtenir vous même. L'emplacement de ce fichier doit être paramétré dans le php.ini.
Nous pouvons éviter de toucher au php.ini, surtout que dans certains cas, c'est impossible. Téléchargez une version récente du fichier lite_php_browscap.ini à partir du site http://browsers.garykeith.com/ puis utilisez ce script pour afficher par exemple le nom et la version du navigateur.
<?
// fonctions trouvées dans les commentaires de fnmatch et de get_browser
// fnmatch n'existe pas sous windows, il faut prévoir un équivalent
if(!function_exists('fnmatch')) {
function fnmatch($pattern, $string) {
return preg_match("#^".strtr(preg_quote($pattern, '#'), array('\*' => '.*', '\?' => '.'))."$#i", $string);
} // end
}
// get_browser cherche toujours dans le php.ini, voici une fonction équivalente qui va chercher directement le fichier de signature :
function php_get_browser($agent = NULL){
$agent=$agent?$agent:$_SERVER['HTTP_USER_AGENT'];
$yu=array();
$q_s=array("#\.#","#\*#","#\?#");
$q_r=array("\.",".*",".?");
$brows=parse_ini_file("lite_php_browscap.ini",true);
foreach($brows as $k=>$t){
if(fnmatch($k,$agent)){
$yu['browser_name_pattern']=$k;
$pat=preg_replace($q_s,$q_r,$k);
$yu['browser_name_regex']=strtolower("^$pat$");
foreach($brows as $g=>$r){
if($t['Parent']==$g){
foreach($brows as $a=>$b){
if($r['Parent']==$a){
$yu=array_merge($yu,$b,$r,$t);
foreach($yu as $d=>$z){
$l=strtolower($d);
$hu[$l]=$z;
}
}
}
}
}
break;
}
}
return $hu;
}
$browser = php_get_browser();
echo "browser ".$browser[browser];
echo "<br>version ".$browser[version];
// ou bien toutes les informations
// print_r($browser);
?>
Vous pouvez tester votre navigateur sur cette page : http://www.cylman.com/test/browser.php
retour