Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Como detectar el navegador y el SO y mostrarlo con PHP
#1
El seguimiento de los visitantes de nuestros sitios webs es un paso muy importante si nos tomamos en serio el análisis de su tráfico y la forma de optimizar nuestras páginas para obtener más visitantes.

Hay muchas razones por las cuales es necesario crear un pequeño script que nos posiblite realizar un seguimiento de nuestros visitantes.

En este tutorial voy a crear una pequeña clase en PHP que nos ayudará a reconocer el navegador y el sistema operativo del agente web (navegador normalmente) que usa un usuario (o robot web) para visitar nuestra página.


La clase se llamará AgenteWeb y su uso será el siguiente:

Código PHP:
require "src/utiles/AgenteWeb.php"
 
$agenteWeb = new AgenteWeb(); 
 
$agenteWeb->setAgente($_SERVER['HTTP_USER_AGENT']); 
 
$agenteWeb->parseaAgente(); 
 
$so             $agenteWeb->getSO(); 
 
$navegador      $agenteWeb->getNavegador(); 
 
$imagenNavegador$agenteWeb->getImagenSrcNavegador(); 
 
$imagenSO       $agenteWeb->getImagenSrcSO(); 

Código PHP:
<?php 
error_reporting
(E_ALL E_NOTICE E_WARNING); 
class 
AgenteWeb
 
  private 
$SO        "";  //Sistema Operativo 
  
private $navegador "";  //Navegador 
  
private $agente    "";  //Agente 

Tendrá un método que reconocerá el sistema operativo y otro al navegador a través del parámetro agente.

Código PHP:
public  function reconocedorSistemaOperativo($Agente){ 
    if      (
ereg("Windows NT 5.1",  $Agente)) $sistemaOperativo "Windows XP";
    elseif  (
ereg("Windows NT 5.0",  $Agente)) $sistemaOperativo "Windows 2000";
    elseif  (
ereg("Win98     ",      $Agente)) $sistemaOperativo "Windows 98"
    elseif  (
ereg("Win",             $Agente)) $sistemaOperativo "Windows ??"
    elseif  ( (
ereg("Mac",           $Agente)) || 
          (
ereg("PPC"$Agente))) $sistemaOperativo "Macintosh"
    elseif  (
ereg("Debian",          $Agente)) $sistemaOperativo "Debian"
    elseif  (
ereg("Linux",           $Agente)) $sistemaOperativo "Linux"
    elseif  (
ereg("FreeBSD",         $Agente)) $sistemaOperativo "FreeBSD"
    elseif  (
ereg("SunOS",           $Agente)) $sistemaOperativo "SunOS"
    elseif  (
ereg("IRIX",            $Agente)) $sistemaOperativo "IRIX"
    elseif  (
ereg("BeOS",            $Agente)) $sistemaOperativo "BeOS"
    elseif  (
ereg("OS/2",            $Agente)) $sistemaOperativo "OS/2"
    elseif  (
ereg("AIX",             $Agente)) $sistemaOperativo "AIX"
    else   
$sistemaOperativo "Desconocido"
 
    return 
$sistemaOperativo

 
public  function 
reconocedorNavegador($agente){
//primero tenemos k conocer si se trata de opera!!! 
//ya que el identificador de este navegador a veces se puede trucar...(OPERA CAN BE spoofed as MSIE 6)
    
if    (eregi("Opera( )*(/){0,1}([0-9]+)(\.([0-9])+)*",            $agente,$browser)); // son validos Opera/7.54 Opera/8 Opera/7.23 Opera 6.2
    
elseif(eregi("Netscape([0-9]*)( )*(/){0,1}([0-9]+)(\.([0-9])+)*"$agente,$browser)); //son validos Netscape/7.02  Netscape6/6.2.1
    
elseif(eregi("MSIE ([0-9]+)(\.([0-9])+)*",                        $agente,$browser)); //son validos MSIE 6.0 MSIE 5.0  MSIE 5.5
    
elseif(eregi("Lynx",                                              $agente,$browser));
    elseif(
eregi("WebTV",                                             $agente,$browser));
    elseif(
eregi("Galeon/([0-9]+)(\.([0-9])+)*",                      $agente,$browser)); //Galeon/2.2.2
    
elseif(eregi("Konqueror/([0-9]+)(\.([0-9])+)*",                   $agente,$browser)); //konqueror/2.2.2 konqueror/3.1
    
elseif(eregi("Firefox( )*(/){0,1}([0-9]+)(\.([0-9])+)*",          $agente,$browser)); //Firefox/0.9 Firefox/0.10.1
    
elseif(eregi("Iceweasel( )*(/){0,1}([0-9]+)(\.([0-9])+)*",        $agente,$browser)); //IceWeasel/0.9 Firefox/0.10.1
    
elseif(eregi("Firebird( )*(/){0,1}([0-9]+)(\.([0-9])+)*",         $agente,$browser)); //Firebird/0.7 Firebird/0.10.1
    
elseif(eregi("Safari",                                            $agente,$browser)); //Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.4 (KHTML, like Gecko) Safari/125.9
    
elseif ((eregi("Gecko",  $agente))
          ||(
eregi("X11",    $agente))
          ||(
eregi("Mozilla",$agente))
          ||(
eregi("U",      $agente)))                               $nombre[0] = "Mozilla";
    elseif(
eregi("WAP",                                               $agente,$browser));
    else 
$nombre[0]="Otro";

      
eregi("([a-z]+)",                         $browser[0],$nombre); //conseguimos el nombre
      
eregi("([0-9]+)(\.([0-9])+)*",            $browser[0],$version); //conseguimos la version
   
$navegador="${nombre[0]} ${version[0]}"//separamos el nombre y la version por un espacio

return $navegador;


Código PHP:
public function reconocerRobot($agente){
    if     (
ereg("Google",  $agente)) $robot "Google"//Googlebot/2.1 (+http://www.google.com/bot.html)
    
elseif (ereg("Yahoo",   $agente)) $robot "Yahoo"//Mozilla/5.0 (compatible; Yahoo! Slurp; http://www.webmasterworld.com/red.cgi?f=21&d=8530&url=http://help.yahoo.com/help/us/ysearch/slurp)
    
elseif (ereg("msnbot",  $agente)) $robot "MSN"//msnbot/0.11 (+http://search.msn.com/msnbot.htm)
    
elseif (ereg("Scooter"$agente)) $robot "Bot"// ? 
    
elseif (ereg("Spider",  $agente)) $robot "Bot"// ? 
    
elseif (ereg("Infoseek",$agente)) $robot "Bot"// ? 
    
elseif (ereg("Slurp",   $agente)) $robot "Bot"// ? 
    
elseif (ereg("bot",     $agente)) $robot "Bot"// ? 
    
else  $robot="Otro";

return 
$robot;


Y los setters and getters correspondientes:

Código PHP:
public function getSO(){
         return   
$this->SO;
    }
    public function 
getNavegador(){
         return   
$this->navegador;
    }
    public function 
getAgente(){
         return   
$this->agente;
    }
    public function 
setAgente($agente){
            
$this->agente=$agente;
    }
    public function 
setSO($SO){
            
$this->SO=$SO;
    }
    public function 
setNavegador($navegador){
            
$this->navegador=$navegador;
    } 

Llamada que realiza el proceso princial de reconocer el navegador y el sistema operativo
Código PHP:
public function parseaAgente(){

        
$this->SO       $this->reconocedorSistemaOperativo ($this->agente);
        
$this->navegador$this->reconocedorNavegador($this->agente);


Obtiene la imagen correspondiente al navegador reconocido

Código PHP:
public function getImagenSrcNavegador(){

       
$img="question.gif";
       
eregi("([a-z]+)",  $this->navegador,$nombre); //conseguimos el nombre
      
switch ($nombre[0]) {
          case 
"Netscape"  :$img='netscape.gif';  break;
          case 
"Galeon"    :$img='galeon.gif';    break;
          case 
"Firefox"   :$img='firefox.gif';   break;
          case 
"Firebird"  :$img='firebird.gif';  break;
          case 
"Iceweasel" :$img='iceweasel.gif'; break;
          case 
"Mozilla"   :$img='mozilla.gif';   break;
          case 
"MSIE"      :$img='explorer.gif';  break;
          case 
"Konqueror" :$img='konqueror.gif'; break;
          case 
"Opera"     :$img='opera.gif';     break;
          case 
"Lynx"      :$img='lynx.gif';      break;
          case 
"Bot"       :$img='altavista.gif'; break;
          case 
"WAP"       :$img='pdaphone.gif';  break;
          case 
"Otro"      :$img='question.gif';  break;
    }
    return 
$img;



Obtiene la imagen correspondiente al sistema operativo reconocido

Código PHP:
public function getImagenSrcSO(){
     
$img ="question.gif";

    switch (
$this->SO ) {
          case 
"Windows ??"   :$img='windows.gif';      break;
             case 
"Windows XP"   :$img='windowsXP.gif';    break;
            case 
"Windows 2000" :$img='windows2000.gif';  break;
          case 
"Windows 98"   :$img='windows98.gif';    break;
          case 
"Macintosh"    :$img='mac.gif';      break;
          case 
"Linux"        :$img='linux.gif';    break;
          case 
"Debian"       :$img='debian.jpg';   break;
          case 
"FreeBSD"      :$img='bsd.gif';      break;
          case 
"SunOS"        :$img='sun.gif';      break;
          case 
"IRIX"         :$img='irix.gif';     break;
          case 
"BeOS"         :$img='be.gif';       break;
          case 
"OS/2"         :$img='os2.gif';      break;
          case 
"AIX"          :$img='aix.gif';      break;
          case 
"Desconocido"  :$img='question.gif'; break;
    }
    return  
$img;


Fin de la clase

Código PHP:
public function __destruct(){
}
}
?>

He dejado en la sección de descargas las imagenes de los navegadores y de los sistemas operativos. Espero que os sirva de ayuda esta pequeña clase.
descarga link directo o link conpleto
Ahora quieres saber... Quien soy?
Soy un delincuente, mi crimen es la curiosidad, Mi crimen es juzgar a las personas por lo que dicen y piensan, y no por lo que aparentan.
Mi crimen es ser mas inteligente que vos, algo por lo cual, nunca me olvidaras.
#2
Buenisimo! Este script me viene de maravilla. Muy elaborado y útil. Sólo con cambiar las imágenes y los textos pude hacer el script que buscaba!
[Imagen: 9jhwu20.png]
WWW
#3
Me gusta, aunque ese código ya esta algo obsoleto, por ejemplo, la función ereg ha sido deprecada y va a ser eliminada de PHP Guiño
#4
Buenisimo! Gracias por compartir, para las personas que estamos aprendiendo php nos viene muy util!
Gracias compañero!
#5
gracias por la información, podría implementarlo para saber cuantos usuarios reales visitan mi web y cuantos robots lo visitan tambien, lo pondré a prueba buen aporte!
WWW
#6
Es enserio, tanto codigo para saber esa caracterisitcas? pensé que sería algo mas simple o facil de hacer.-. vaya sorpresa me encontre...


Posibles temas similares...
Tema Autor Respuestas Vistas Último mensaje
Información [Tutorial] Detectar AdBlock y mostrar mensaje (jQuery) DarkMaster 7 876 28-01-2016, 03:32 PM
Último mensaje: TapaJerez
  [Duda] Icono en pestaña de navegador larr86 4 493 12-12-2015, 07:29 AM
Último mensaje: gassip
Ladrillo [JS] Detectar Móviles & Redireccionar Aeoris 12 1,215 24-10-2015, 07:36 AM
Último mensaje: zeuz
  [Tutorial] Como hacer que tu página no se almacene en la caché del navegador Kevin9908 10 1,946 28-02-2015, 08:26 PM
Último mensaje: amplox
Pregunta Duda con fotos de web en navegador de celulares othgeg 9 763 12-05-2014, 02:37 PM
Último mensaje: othgeg
  [PHP] Mostrar navegador torgar22 2 639 19-03-2013, 07:45 PM
Último mensaje: MrLoco
  Detectar si el usuario apretó el botón me gusta facebook torgar22 7 1,859 04-03-2013, 03:58 PM
Último mensaje: torgar22
  Mostrar información del navegador [Clase PHP] AbaddonOrmuz 2 1,081 22-09-2012, 05:32 PM
Último mensaje: Marcus_Fenix
  Detectar país de visitantes a nuestra web con PHP diringax 7 1,657 27-07-2012, 02:08 AM
Último mensaje: Matt
  Como colocar un enlace de #TOP como en cuantocabron Juliens 5 1,618 21-12-2011, 12:43 AM
Último mensaje: hackcrack



Usuarios navegando en este tema: 1 invitado(s)