sábado, 10 de agosto de 2013

Obtener navegador del visitante con PHP

A la hora de realizar estadísticas de uso de una Web, es interesante obtener el navegador empleado por cada usuario, así podremos conocer los hábitos de los visitas a nuestra Web y poder tomar decisiones en función de ello.

Para obtener el navegador empleado en una visita, en primer lugar, debemos obtener el USER_AGENT. El USER_AGENT nos dará toda la información necesaria sobre el navegador y sistema operativo de la visita.

En el artículo Obtener sistema operativo del visitante con PHP explico cómo obtener el sistema operativo. Para recoger el USER_AGENT de la visita lo haremos:

$user_agent = $_SERVER['HTTP_USER_AGENT'];

Una vez obtenido el USER_AGENT únicamente tenemos que pasar este valor a nuestra función getBrowser():

function getBrowser($user_agent) {
   $navegadores = array(
      'Opera' => 'Opera',
      'Chrome' => 'Chrome',
      'Safari' => 'Safari',
      'Mozilla Firefox'=> '(Firebird)|(Firefox)',
      'Galeon' => 'Galeon',
      'Mozilla'=>'Gecko',
      'MyIE'=>'MyIE',
      'Lynx' => 'Lynx',
      'Netscape' => '(Mozilla/4\.75)|(Netscape6)|(Mozilla/4\.08)|(Mozilla/4\.5)|(Mozilla/4\.6)|(Mozilla/4\.79)',
      'Konqueror'=>'Konqueror',
      'IExplorer 10' => '(MSIE 10\.[0-9]+)',
      'IExplorer 9' => '(MSIE 9\.[0-9]+)',
      'IExplorer 8' => '(MSIE 8\.[0-9]+)',
      'IExplorer 7' => '(MSIE 7\.[0-9]+)',
      'IExplorer 6' => '(MSIE 6\.[0-9]+)',
      'IExplorer 5' => '(MSIE 5\.[0-9]+)',
      'IExplorer 4' => '(MSIE 4\.[0-9]+)',
   );
   foreach($navegadores as $navegador=>$pattern){
      if (eregi($pattern, $user_agent))
         return $navegador;
   }
   return 'Otros';
}

La función nos devolverá una cadena de texto con el nombre del navegador. En caso de que no lo reconozca devolverá “Otros”.

A medida que van surgiendo nuevos navegadores o nuevas versiones de los navegadores, podemos ir ampliando la función getBrowser() para así reconocerlos y que la función no nos devuelva el valor “Otros”.

No hay comentarios :

Publicar un comentario