Foros del Web » Programando para Internet » PHP »

Detectar Navegador, Versión y Sistema Operativo

Estas en el tema de Detectar Navegador, Versión y Sistema Operativo en el foro de PHP en Foros del Web. Hola , esta noche me encontre con la necesidad de detectar el navegador y su version con php, y me puse en la tarea de ...
  #1 (permalink)  
Antiguo 17/01/2013, 05:10
 
Fecha de Ingreso: septiembre-2012
Ubicación: Buenos aires
Mensajes: 110
Antigüedad: 11 años, 6 meses
Puntos: 9
Sonrisa Detectar Navegador, Versión y Sistema Operativo

Hola , esta noche me encontre con la necesidad de detectar el navegador y su version con php, y me puse en la tarea de buscarla por internet, no habia una que me convenciera asi que saque trozos de codigos y los fui adaptando lo probe en todos los navegadores y en todas sus versiones, funciona correctamente, no tengo ni idea si en mac o masitosh funciona no tengo esos sistemas xD, le agregaria android y todo lo demás ... pero no tengo smartphone como para probarlo :p

Código PHP:
Ver original
  1. # Browser
  2.     class Browser{
  3.  
  4.         # Forma de uso
  5.         # $Nav  = new Browser;
  6.         # $Nav->Iniciar();  # Inicia el constructor
  7.         # $Nav->Navegador;  # Devuelve el navegador [String]
  8.         # $Nav->Version;    # Devuelve la version [Int:Entero]
  9.         # $Nav->Sistemao;   # Devuelve el Sistema Operativo [String]
  10.        
  11.         # Variables
  12.         public $User_Agent  = NULL;
  13.         public $Navegador   = NULL;
  14.         public $Version     = NULL;
  15.         public $SistemaO    = NULL;
  16.        
  17.         # Constructor
  18.         public function Iniciar(){
  19.            
  20.             # Constructor
  21.             $this->User_Agent = $_SERVER['HTTP_USER_AGENT'];
  22.            
  23.             # Funciones
  24.             $this->Navegador();
  25.             $this->Version();
  26.             $this->SO();
  27.         }
  28.    
  29.         # Detectar
  30.         private function Navegador(){
  31.            
  32.             if(preg_match('/MSIE/i',$this->User_Agent))         $this->Navegador = "MSIE";
  33.             if(preg_match('/Opera/i',$this->User_Agent))        $this->Navegador = 'Opera';
  34.             if(preg_match('/Firefox/i',$this->User_Agent))      $this->Navegador = 'Firefox';
  35.             if(preg_match('/Safari/i',$this->User_Agent))       $this->Navegador = 'Safari';
  36.             if(preg_match('/Chrome/i',$this->User_Agent))       $this->Navegador = 'Chrome';
  37.            
  38.         }
  39.    
  40.         # Version
  41.         private function Version(){
  42.            
  43.            
  44.             if($this->Navegador!=='Opera' && preg_match("#(".strtolower($this->Navegador).")[/ ]?([0-9.]*)#", strtolower($this->User_Agent), $match))
  45.                 $this->Version = floor($match[2]);
  46.            
  47.             if($this->Navegador=='Opera' || $this->Navegador=='Safari' && preg_match("#(version)[/ ]?([0-9.]*)#", strtolower($this->User_Agent), $match))
  48.                 $this->Version = floor($match[2]);
  49.                
  50.         }
  51.        
  52.        
  53.         # Sistema Operativo
  54.         private function SO(){
  55.            
  56.             if(preg_match("/win/i", $this->User_Agent))             $this->SistemaO = 'Windows';
  57.             if(preg_match("/linux/i", $this->User_Agent))   $this->SistemaO = 'Linux';
  58.             if(preg_match("/mac/i", $this->User_Agent))     $this->SistemaO = 'Macintosh';
  59.            
  60.         }
  61.  
  62.     }
  #2 (permalink)  
Antiguo 17/01/2013, 07:48
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: [Aporte] Detectar Navegador, Versión y Sistema Operativo

Hola compañero me gusto bastante tu funcion, sobre todo la parte del navegador, aunque no entiendo mucho de PDO (ya aprendere ya aprendere) podrias si tienes tiempo recodificar en php orientado a prosedimientos la parte de detectar navegador? me seria muy util y soy muy novato en la PDO como para hacerlo yo mismo aunque intuyo que debe de ser una pavada la conversion XD muchas gracias.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #3 (permalink)  
Antiguo 17/01/2013, 09:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: [Aporte] Detectar Navegador, Versión y Sistema Operativo

PHP ya dispone de una función que hace eso, se llama get_browser().

Aparte tu aporte es incorrecto, ya que pones como privadas todas las funciones, eso hace que no lo puedas ver desde afuera de la clase.

@NSD: no es PDO es POO (Programación Orientada a Objetos), PDO es una clase para la abstracción y acceso a las bases de datos en PHP.

Saludos
  #4 (permalink)  
Antiguo 17/01/2013, 10:26
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: [Aporte] Detectar Navegador, Versión y Sistema Operativo

Cita:
@NSD: no es PDO es POO (Programación Orientada a Objetos), PDO es una clase para la abstracción y acceso a las bases de datos en PHP.
:ojazos: es verdad, tienes razon. igualmente tampoco sepo mucho de ninguna de las dos XD

No conocia la funcion get_browser pero un ejemplo de los comentarios de php.net me sirve de maravillas gracias y saludos.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #5 (permalink)  
Antiguo 17/01/2013, 11:04
 
Fecha de Ingreso: septiembre-2012
Ubicación: Buenos aires
Mensajes: 110
Antigüedad: 11 años, 6 meses
Puntos: 9
Respuesta: [Aporte] Detectar Navegador, Versión y Sistema Operativo

Cita:
Iniciado por GatorV Ver Mensaje
PHP ya dispone de una función que hace eso, se llama get_browser().

Aparte tu aporte es incorrecto, ya que pones como privadas todas las funciones, eso hace que no lo puedas ver desde afuera de la clase.

@NSD: no es PDO es POO (Programación Orientada a Objetos), PDO es una clase para la abstracción y acceso a las bases de datos en PHP.

Saludos
Código texto:
Ver original
  1. get_browser();
  2.  
  3. Nota:
  4.  
  5. Para que esto funcione, la configuración de browscap en php.ini debe apuntar a la ubicación correcta del archivo browscap.ini en su sistema.
  6.  
  7. browscap.ini no está incluido con PHP, pero se pude encontrar un archivo actualizado aquí » php_browscap.ini.
  8.  
  9. Mientras que browscap.ini contiene información sobre muchos navegadores, recae en el usuario la actualización para mantener la bases de datos vigente. El formato del archivo se explica por sí solo.

como no tenia muchas ganas de irme a fondo con esa nota que esta en php.net, hice esta clase bástante sencilla, es solo un aporte sencillo y funcional, intento ayudar con clases funcionales no digo que no haya mejores formas de hacerlo, y sobre las funciones privadas, no queria que sean publicas, ya que los valores estan almacenados en las variables, para que mostrar funciones si no son necesarias para los datos... osea, en una variable esta el valor y la funcion cumple su rol, quise hacerlo más sencillo...
  #6 (permalink)  
Antiguo 17/01/2013, 11:10
 
Fecha de Ingreso: septiembre-2012
Ubicación: Buenos aires
Mensajes: 110
Antigüedad: 11 años, 6 meses
Puntos: 9
Respuesta: [Aporte] Detectar Navegador, Versión y Sistema Operativo

Cita:
Iniciado por NSD Ver Mensaje
:ojazos: es verdad, tienes razon. igualmente tampoco sepo mucho de ninguna de las dos XD

No conocia la funcion get_browser pero un ejemplo de los comentarios de php.net me sirve de maravillas gracias y saludos.
Por procedimiento es algo más engorroso, pero bueno xD, toma:
Código PHP:
Ver original
  1. <?
  2.  
  3.  
  4.  
  5.         # Browser
  6.  
  7.         # Forma de uso
  8.         # Iniciar();    # Inicializar primero esta funcion.
  9.         # $Navegador;   # Devuelve el navegador [String]
  10.         # $Version;     # Devuelve la version [Int:Entero]
  11.         # $Sistemao;    # Devuelve el Sistema Operativo [String]
  12.        
  13.         # Variables
  14.         $User_Agent = NULL;
  15.         $Navegador  = NULL;
  16.         $Version    = NULL;
  17.         $SistemaO   = NULL;
  18.        
  19.         # Constructor
  20.         function Iniciar(){
  21.            
  22.             # Constructor
  23.             $User_Agent = $_SERVER['HTTP_USER_AGENT'];
  24.            
  25.             # Funciones
  26.             $Navegadores();
  27.             $Versiones();
  28.             $SO();
  29.         }
  30.    
  31.         # Detectar
  32.         function Navegadores(){
  33.            
  34.             if(preg_match('/MSIE/i',$User_Agent))       $Navegador = "MSIE";
  35.             if(preg_match('/Opera/i',$User_Agent))      $Navegador = 'Opera';
  36.             if(preg_match('/Firefox/i',$User_Agent))    $Navegador = 'Firefox';
  37.             if(preg_match('/Safari/i',$User_Agent))     $Navegador = 'Safari';
  38.             if(preg_match('/Chrome/i',$User_Agent))     $Navegador = 'Chrome';
  39.            
  40.         }
  41.    
  42.         # Version
  43.         function Versiones(){
  44.            
  45.            
  46.             if($Navegador!=='Opera' && preg_match("#(".strtolower($Navegador).")[/ ]?([0-9.]*)#", strtolower($User_Agent), $match))
  47.                 $Version = floor($match[2]);
  48.            
  49.             if($Navegador=='Opera' || $Navegador=='Safari' && preg_match("#(version)[/ ]?([0-9.]*)#", strtolower($User_Agent), $match))
  50.                 $Version = floor($match[2]);
  51.                
  52.         }
  53.        
  54.        
  55.         # Sistema Operativo
  56.         function SO(){
  57.            
  58.             if(preg_match("/win/i", $User_Agent))               $SistemaO = 'Windows';
  59.             if($linux = preg_match("/linux/i", $User_Agent))    $SistemaO = 'Linux';
  60.             if($mac = preg_match("/mac/i", $User_Agent))        $SistemaO = 'Macintosh';
  61.            
  62.         }
  63.  
  64. ?>
  #7 (permalink)  
Antiguo 17/01/2013, 11:13
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: [Aporte] Detectar Navegador, Versión y Sistema Operativo

Pésimo aporte, ahora en tu transformación a funciones a queda aún peor.

Tienes bastante que estudiar antes de hacer aportes de calidad.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 17/01/2013, 11:31
 
Fecha de Ingreso: septiembre-2012
Ubicación: Buenos aires
Mensajes: 110
Antigüedad: 11 años, 6 meses
Puntos: 9
Respuesta: [Aporte] Detectar Navegador, Versión y Sistema Operativo

Hay muchos que son más novatos que yo, y esto le puede servir, no lo subi para personas de elite en php, igual gracias por el apoyo que me dan ñ.ñ de php a ayuda al suicida les iria muy bien -.-'
  #9 (permalink)  
Antiguo 17/01/2013, 12:00
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: [Aporte] Detectar Navegador, Versión y Sistema Operativo

Lo que pasa es que tu "aporte" convertido a funciones no sirve, las funciones no se mandan llamar usando $, eso te va a marcar un problema.
  #10 (permalink)  
Antiguo 17/01/2013, 13:28
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: [Aporte] Detectar Navegador, Versión y Sistema Operativo

mmmm he tenido problemas al usar tu funcion convertida, espero me disculpes por poner en tu tema mi funcion, pero lo ago para no repetir temas, ademas creo que la encotraran provechosa, detecta todo tipo de visitantes, si algun tipo no les iteresa pueden eliminar la categoria y ahorrar velocidad, funciona testeada en chrome ie firefox safari opera dragon rockmeit que son todos lo que tengo instalados pero intuyo que funcionara para todosXD espero les sirva:

Código PHP:
Ver original
  1. Function ObtenerNavegador($Agente) {
  2.     $Agente=StrToLower($Agente);
  3.     $AgentesSoportados = Array(
  4.         'Robots' => Array('008','abachobot','accoona-ai-agent','addsugarspiderbot','anyapexbot','arachmo','b-l-i-t-z-b-o-t','baiduspider','becomebot','beslistbot','billybobbot','bimbot','bingbot','blitzbot','boitho.com-dc','boitho.com-robot','btbot','catchbot','cerberiandrtrs','charlotte','converacrawler','cosmos','covarioids','dataparksearch','diamondbot','discobot','dotbot','earthcom.info','emeraldshield.comwebbot','envolk[its]spider','esperanzabot','exabot','fastenterprisecrawler','fast-webcrawler','fdserobot','findlinks','furlbot','fyberspider','g2crawler','gaisbot','galaxybot','geniebot','gigabot','girafabot','googlebot','googlebot-image','gurujibot','happyfunbot','hl_ftien_spider','holmes','htdig','iaskspider','ia_archiver','iccrawler','ichiro','igdespyder','irlbot','issuecrawler','jaxifiedbot','jyxobot','koepabot','l.webis','lapozzbot','larbin','ldspider','lexxebot','lingueebot','linkwalker','lmspider','lwp-trivial','mabontland','magpie-crawler','mediapartners-google','mj12bot','mlbot','mnogosearch','mogimogi','mojeekbot','moreoverbot','morningpaper','msnbot','msrbot','mvaclient','mxbot','netresearchserver','netseercrawler','newsgator','ng-search','nicebot','noxtrumbot','nusearchspider','nutchcvs','nymesis','obot','oegp','omgilibot','omniexplorer_bot','oozbot','orbiter','pagebiteshyperbot','peew','polybot','pompos','postpost','psbot','pycurl','qseero','radian6','rampybot','rufusbot','sandcrawler','sbider','scoutjet','scrubby','searchsight','seekbot','semanticdiscovery','sensiswebcrawler','seochat::bot','seznambot','shim-crawler','shopwiki','shoularobot','silk','sitebot','snappy','sogouspider','sosospider','speedyspider','sqworm','stackrambler','suggybot','surveybot','synoobot','teoma','terrawizbot','thesubot','thumbnail.czrobot','tineye','truwogps','turnitinbot','tweetedtimesbot','twengabot','updated','urlfilebot','vagabondo','voilabot','vortex','voyager','vyu2','webcollage','websquash.com','wf84','wofindeichrobot','womlpefactory','xaldon_webspider','yacy','yahoo!slurp','yahoo!slurpchina','yahooseeker','yahooseeker-testing','yandexbot','yandeximages','yandexmetrika','yasaklibot','yeti','yodaobot','yooglifetchagent','youdaobot','zao','zealbot','zspider','zyborg'),
  5.    
  6.         'Navegadores' => Array('abrowse','acoobrowser','americaonlinebrowser','amigavoyager','aol','arora','avantbrowser','beonex','bonecho','browzar','camino','charon','cheshire','chimera','chrome','chromeplus','classilla','cometbird','comodo_dragon','conkeror','crazybrowser','cyberdog','deepnetexplorer','deskbrowse','dillo','dooble','elementbrowser','elinks','enigmabrowser','enigmafox','epiphany','escape','firebird','firefox','firewebnavigator','flock','fluid','galaxy','galeon','granparadiso','greenbrowser','hana','hotjava','ibmwebexplorer','ibrowse','icab','iceape','icecat','iceweasel','inetbrowser','internetexplorer','irider','iron','k-meleon','k-ninja','kapiko','kazehakase','kindlebrowser','kkman','kmlite','konqueror','leechcraft','links','lobo','lolifox','lorentz','lunascape','lynx','madfox','maxthon','midori','minefield','mozilla','myibrow','myie2','namoroka','navscape','ncsa_mosaic','netnewswire','netpositive','netscape','netsurf','omniweb','opera','orca','oregano','osb-browser','palemoon','phoenix','pogo','prism','qtwebinternetbrowser','rekonq','retawq','rockmelt','safari','seamonkey','shiira','shiretoko','sleipnir','slimbrowser','stainless','sundance','sunrise','surf','sylera','tencenttraveler','tenfourfox','theworldbrowser','uzbl','vimprobable','vonkeror','w3m','weltweitimnetzbrowser','worldwideweb','wyzo'),
  7.    
  8.         'Mobiles'=>Array('androidwebkitbrowser','blackberry','blazer','bolt','browserfors60','doris','dorothy','fennec','gobrowser','iemobile','iris','maemobrowser','mib','minimo','netfront','operamini','operamobile','semc-browser','skyfire','teashark','teleca-obigo','uzardweb'),
  9.    
  10.         'Consolas' => Array('bunjalloo','playstation3','playstationportable','wii'),
  11.        
  12.         'NavegadoresOffLine' => Array('offlineexplorer','superbot','webdownloader','webcopier','webzip','wget'),
  13.        
  14.         'ClientesMail' => Array('Thunderbird'),
  15.        
  16.         'LinkChecker' => Array('abilogicbot','linkvalet','linkvaliditycheck','linkexaminer','linksmanager.com_bot','mojoorobot','notifixious','onlinelinkvalidator','ploetz+zeller','reciprocallinksystempro','rellinkcheckerlite','sitebar','vivantelinkchecker','w3c-checklink','xenulinksleuth'),
  17.        
  18.         'ColectoresMail' => Array('emailsiphon'),
  19.        
  20.         'Validadores' => Array('csehtmlvalidator','csscheck','cynthia','htmlparser','p3pvalidator','w3c_css_validator_jfouffa','w3c_validator','wdg_validator'),
  21.        
  22.         'Feed' => Array('awasu','bloglines','everyfeed-spider','feedfetcher-google','greatnews','gregarius','magpierss','nfreader','universalfeedparser'),
  23.        
  24.         'Librerias' => Array('binget','curl','java','libwww-perl','microsofturlcontrol','peach','php','pxyscand','pycurl','python-urllib'),
  25.        
  26.         'PlataformasEnNube' => Array('appengine-google'),
  27.        
  28.         'Otros' => Array('!susie','amaya','cocoal.icio.us','domainsdb.netmetacrawler','gpodder','gsitecrawler','itunes','lftp','metauri','mt-newswatcher    ','nitropdf','snoopy','urd-magpie','webcapture','windows-media-player')
  29.     );
  30.    
  31.     $Cliente['NOM']='modelo fuera de serie';
  32.     $Cliente['CAT']='dispositivo';
  33.     Foreach($AgentesSoportados As $Nombre => $Categoria){  
  34.         Foreach($Categoria As $Navegador){
  35.             If(StriStr($Agente,$Navegador)) { $Cliente['NOM']=$Navegador; $Cliente['CAT']=$Nombre; Break; }
  36.         }
  37.         If($Cliente['CAT']!='dispositivo'){ Break; }
  38.     }
  39.     Return($Cliente);
  40. }
  41. $Visitante = ObtenerNavegador($_SERVER['HTTP_USER_AGENT']);
  42. Echo('Estas usando un: '.$Visitante['CAT'].' y es '.$Visitante['NOM'].' lo se todo sobre ti ;).');

Por cierto los nombres los saque de aqui: http://www.useragentstring.com/pages...gentstring.php
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #11 (permalink)  
Antiguo 17/01/2013, 15:13
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: [Aporte] Detectar Navegador, Versión y Sistema Operativo

Ya hay un tema donde se habla de detección de dispositivos móviles, pero también incluye navegador, sistema operativo, etc. con varias opciones, casi para todos los gustos: http://www.forosdelweb.com/f18/mejor...oviles-945378/
__________________
- León, Guanajuato
- GV-Foto
  #12 (permalink)  
Antiguo 17/01/2013, 16:26
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: [Aporte] Detectar Navegador, Versión y Sistema Operativo

Cita:
Ya hay un tema donde se habla de detección de dispositivos móviles, pero también incluye navegador, sistema operativo, etc. con varias opciones, casi para todos los gustos: http://www.forosdelweb.com/f18/mejor...oviles-945378/
desconocia este hilo, la pagina sugerida por emprear parece ser bastante completa e interesante. con respecto a detectar dispositivos mobiles la funcion que puse lo hace bastante facil, de hecho no solo mobiles, detecta si es movil, navegador, robot, cliente de mail, consolas etc, solo habria que preguntar asi:
Código PHP:
Ver original
  1. $Visitante = ObtenerNavegador($_SERVER['HTTP_USER_AGENT']);If($Visitante[CAP]=='Mobiles'){...}
pudiendo poner en lugar d emobiles consolas, navegadores, etc.

En fin es cuestion de gustos y por suerte hay para todos
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #13 (permalink)  
Antiguo 18/01/2013, 04:25
 
Fecha de Ingreso: septiembre-2012
Ubicación: Buenos aires
Mensajes: 110
Antigüedad: 11 años, 6 meses
Puntos: 9
Respuesta: [Aporte] Detectar Navegador, Versión y Sistema Operativo

@GatorV la cosa es que lo edite acá, se me habra pasado el $ en las funciones, se que no se llaman asi :p

Cita:
Iniciado por underwebinfo Ver Mensaje
Por procedimiento es algo más engorroso, pero bueno xD, toma:
Código PHP:
Ver original
  1. <?
  2.  
  3.  
  4.  
  5.         # Browser
  6.  
  7.         # Forma de uso
  8.         # Iniciar();    # Inicializar primero esta funcion.
  9.         # $Navegador;   # Devuelve el navegador [String]
  10.         # $Version;     # Devuelve la version [Int:Entero]
  11.         # $Sistemao;    # Devuelve el Sistema Operativo [String]
  12.        
  13.         # Variables
  14.         $User_Agent = NULL;
  15.         $Navegador  = NULL;
  16.         $Version    = NULL;
  17.         $SistemaO   = NULL;
  18.        
  19.         # Constructor
  20.         function Iniciar(){
  21.            
  22.             # Constructor
  23.             $User_Agent = $_SERVER['HTTP_USER_AGENT'];
  24.            
  25.             # Funciones
  26.             Navegadores();
  27.             Versiones();
  28.             SO();
  29.         }
  30.    
  31.         # Detectar
  32.         function Navegadores(){
  33.            
  34.             if(preg_match('/MSIE/i',$User_Agent))       $Navegador = "MSIE";
  35.             if(preg_match('/Opera/i',$User_Agent))      $Navegador = 'Opera';
  36.             if(preg_match('/Firefox/i',$User_Agent))    $Navegador = 'Firefox';
  37.             if(preg_match('/Safari/i',$User_Agent))     $Navegador = 'Safari';
  38.             if(preg_match('/Chrome/i',$User_Agent))     $Navegador = 'Chrome';
  39.            
  40.         }
  41.    
  42.         # Version
  43.         function Versiones(){
  44.            
  45.            
  46.             if($Navegador!=='Opera' && preg_match("#(".strtolower($Navegador).")[/ ]?([0-9.]*)#", strtolower($User_Agent), $match))
  47.                 $Version = floor($match[2]);
  48.            
  49.             if($Navegador=='Opera' || $Navegador=='Safari' && preg_match("#(version)[/ ]?([0-9.]*)#", strtolower($User_Agent), $match))
  50.                 $Version = floor($match[2]);
  51.                
  52.         }
  53.        
  54.        
  55.         # Sistema Operativo
  56.         function SO(){
  57.            
  58.             if(preg_match("/win/i", $User_Agent))               $SistemaO = 'Windows';
  59.             if($linux = preg_match("/linux/i", $User_Agent))    $SistemaO = 'Linux';
  60.             if($mac = preg_match("/mac/i", $User_Agent))        $SistemaO = 'Macintosh';
  61.            
  62.         }
  63.  
  64. ?>
  #14 (permalink)  
Antiguo 18/01/2013, 04:29
 
Fecha de Ingreso: septiembre-2012
Ubicación: Buenos aires
Mensajes: 110
Antigüedad: 11 años, 6 meses
Puntos: 9
Respuesta: [Aporte] Detectar Navegador, Versión y Sistema Operativo

Cita:
Iniciado por NSD Ver Mensaje
mmmm he tenido problemas al usar tu funcion convertida, espero me disculpes por poner en tu tema mi funcion, pero lo ago para no repetir temas, ademas creo que la encotraran provechosa, detecta todo tipo de visitantes, si algun tipo no les iteresa pueden eliminar la categoria y ahorrar velocidad, funciona testeada en chrome ie firefox safari opera dragon rockmeit que son todos lo que tengo instalados pero intuyo que funcionara para todosXD espero les sirva:

Código PHP:
Ver original
  1. Function ObtenerNavegador($Agente) {
  2.     $Agente=StrToLower($Agente);
  3.     $AgentesSoportados = Array(
  4.         'Robots' => Array('008','abachobot','accoona-ai-agent','addsugarspiderbot','anyapexbot','arachmo','b-l-i-t-z-b-o-t','baiduspider','becomebot','beslistbot','billybobbot','bimbot','bingbot','blitzbot','boitho.com-dc','boitho.com-robot','btbot','catchbot','cerberiandrtrs','charlotte','converacrawler','cosmos','covarioids','dataparksearch','diamondbot','discobot','dotbot','earthcom.info','emeraldshield.comwebbot','envolk[its]spider','esperanzabot','exabot','fastenterprisecrawler','fast-webcrawler','fdserobot','findlinks','furlbot','fyberspider','g2crawler','gaisbot','galaxybot','geniebot','gigabot','girafabot','googlebot','googlebot-image','gurujibot','happyfunbot','hl_ftien_spider','holmes','htdig','iaskspider','ia_archiver','iccrawler','ichiro','igdespyder','irlbot','issuecrawler','jaxifiedbot','jyxobot','koepabot','l.webis','lapozzbot','larbin','ldspider','lexxebot','lingueebot','linkwalker','lmspider','lwp-trivial','mabontland','magpie-crawler','mediapartners-google','mj12bot','mlbot','mnogosearch','mogimogi','mojeekbot','moreoverbot','morningpaper','msnbot','msrbot','mvaclient','mxbot','netresearchserver','netseercrawler','newsgator','ng-search','nicebot','noxtrumbot','nusearchspider','nutchcvs','nymesis','obot','oegp','omgilibot','omniexplorer_bot','oozbot','orbiter','pagebiteshyperbot','peew','polybot','pompos','postpost','psbot','pycurl','qseero','radian6','rampybot','rufusbot','sandcrawler','sbider','scoutjet','scrubby','searchsight','seekbot','semanticdiscovery','sensiswebcrawler','seochat::bot','seznambot','shim-crawler','shopwiki','shoularobot','silk','sitebot','snappy','sogouspider','sosospider','speedyspider','sqworm','stackrambler','suggybot','surveybot','synoobot','teoma','terrawizbot','thesubot','thumbnail.czrobot','tineye','truwogps','turnitinbot','tweetedtimesbot','twengabot','updated','urlfilebot','vagabondo','voilabot','vortex','voyager','vyu2','webcollage','websquash.com','wf84','wofindeichrobot','womlpefactory','xaldon_webspider','yacy','yahoo!slurp','yahoo!slurpchina','yahooseeker','yahooseeker-testing','yandexbot','yandeximages','yandexmetrika','yasaklibot','yeti','yodaobot','yooglifetchagent','youdaobot','zao','zealbot','zspider','zyborg'),
  5.    
  6.         'Navegadores' => Array('abrowse','acoobrowser','americaonlinebrowser','amigavoyager','aol','arora','avantbrowser','beonex','bonecho','browzar','camino','charon','cheshire','chimera','chrome','chromeplus','classilla','cometbird','comodo_dragon','conkeror','crazybrowser','cyberdog','deepnetexplorer','deskbrowse','dillo','dooble','elementbrowser','elinks','enigmabrowser','enigmafox','epiphany','escape','firebird','firefox','firewebnavigator','flock','fluid','galaxy','galeon','granparadiso','greenbrowser','hana','hotjava','ibmwebexplorer','ibrowse','icab','iceape','icecat','iceweasel','inetbrowser','internetexplorer','irider','iron','k-meleon','k-ninja','kapiko','kazehakase','kindlebrowser','kkman','kmlite','konqueror','leechcraft','links','lobo','lolifox','lorentz','lunascape','lynx','madfox','maxthon','midori','minefield','mozilla','myibrow','myie2','namoroka','navscape','ncsa_mosaic','netnewswire','netpositive','netscape','netsurf','omniweb','opera','orca','oregano','osb-browser','palemoon','phoenix','pogo','prism','qtwebinternetbrowser','rekonq','retawq','rockmelt','safari','seamonkey','shiira','shiretoko','sleipnir','slimbrowser','stainless','sundance','sunrise','surf','sylera','tencenttraveler','tenfourfox','theworldbrowser','uzbl','vimprobable','vonkeror','w3m','weltweitimnetzbrowser','worldwideweb','wyzo'),
  7.    
  8.         'Mobiles'=>Array('androidwebkitbrowser','blackberry','blazer','bolt','browserfors60','doris','dorothy','fennec','gobrowser','iemobile','iris','maemobrowser','mib','minimo','netfront','operamini','operamobile','semc-browser','skyfire','teashark','teleca-obigo','uzardweb'),
  9.    
  10.         'Consolas' => Array('bunjalloo','playstation3','playstationportable','wii'),
  11.        
  12.         'NavegadoresOffLine' => Array('offlineexplorer','superbot','webdownloader','webcopier','webzip','wget'),
  13.        
  14.         'ClientesMail' => Array('Thunderbird'),
  15.        
  16.         'LinkChecker' => Array('abilogicbot','linkvalet','linkvaliditycheck','linkexaminer','linksmanager.com_bot','mojoorobot','notifixious','onlinelinkvalidator','ploetz+zeller','reciprocallinksystempro','rellinkcheckerlite','sitebar','vivantelinkchecker','w3c-checklink','xenulinksleuth'),
  17.        
  18.         'ColectoresMail' => Array('emailsiphon'),
  19.        
  20.         'Validadores' => Array('csehtmlvalidator','csscheck','cynthia','htmlparser','p3pvalidator','w3c_css_validator_jfouffa','w3c_validator','wdg_validator'),
  21.        
  22.         'Feed' => Array('awasu','bloglines','everyfeed-spider','feedfetcher-google','greatnews','gregarius','magpierss','nfreader','universalfeedparser'),
  23.        
  24.         'Librerias' => Array('binget','curl','java','libwww-perl','microsofturlcontrol','peach','php','pxyscand','pycurl','python-urllib'),
  25.        
  26.         'PlataformasEnNube' => Array('appengine-google'),
  27.        
  28.         'Otros' => Array('!susie','amaya','cocoal.icio.us','domainsdb.netmetacrawler','gpodder','gsitecrawler','itunes','lftp','metauri','mt-newswatcher    ','nitropdf','snoopy','urd-magpie','webcapture','windows-media-player')
  29.     );
  30.    
  31.     $Cliente['NOM']='modelo fuera de serie';
  32.     $Cliente['CAT']='dispositivo';
  33.     Foreach($AgentesSoportados As $Nombre => $Categoria){  
  34.         Foreach($Categoria As $Navegador){
  35.             If(StriStr($Agente,$Navegador)) { $Cliente['NOM']=$Navegador; $Cliente['CAT']=$Nombre; Break; }
  36.         }
  37.         If($Cliente['CAT']!='dispositivo'){ Break; }
  38.     }
  39.     Return($Cliente);
  40. }
  41. $Visitante = ObtenerNavegador($_SERVER['HTTP_USER_AGENT']);
  42. Echo('Estas usando un: '.$Visitante['CAT'].' y es '.$Visitante['NOM'].' lo se todo sobre ti ;).');

Por cierto los nombres los saque de aqui: http://www.useragentstring.com/pages...gentstring.php
y las versiones de los navegadores ?
  #15 (permalink)  
Antiguo 18/01/2013, 04:37
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Respuesta: [Aporte] Detectar Navegador, Versión y Sistema Operativo

Yo lo que veo que falla en las funciones es no usar un return y ya que el programador meta el resultado en la variable que quiera.
  #16 (permalink)  
Antiguo 18/01/2013, 09:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: [Aporte] Detectar Navegador, Versión y Sistema Operativo

Exacto al no hacer un return no puedes leer nada de las variables y no sirve para nada, es lo que le estamos tratando de decir a underwebinfo.
  #17 (permalink)  
Antiguo 18/01/2013, 11:20
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: [Aporte] Detectar Navegador, Versión y Sistema Operativo

Cita:
y las versiones de los navegadores ?
mmm pues nose XD jaja solo la uso con la parte de navagadores, para saber si usa crome safari opera o dragon que son los que mejos soporte ofrecen al css3 (no soy muy seguidor de mozzilla) y si no es alguno de esos muestro un cartel avisando que su navegador es obsoleto, pero creo que tienes razon, para ser completa tiene que indicar tambien la vercion :/ si se me ocurre algo lo publico saludos
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #18 (permalink)  
Antiguo 18/01/2013, 11:30
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años
Puntos: 33
Respuesta: [Aporte] Detectar Navegador, Versión y Sistema Operativo

Cita:
Iniciado por NSD Ver Mensaje
mmm pues nose XD jaja solo la uso con la parte de navagadores, para saber si usa crome safari opera o dragon que son los que mejos soporte ofrecen al css3 (no soy muy seguidor de mozzilla) y si no es alguno de esos muestro un cartel avisando que su navegador es obsoleto, pero creo que tienes razon, para ser completa tiene que indicar tambien la vercion :/ si se me ocurre algo lo publico saludos
Hace no mucho publiqué una entrada en mi blog acerca de este tema.

Aquí te dejo una función que devuelve navegador usado incluyendo versión y si es navegador móvil (la parte de navegador móvil la encontré por ahí y la junté a lo que ya tenía )

Aquí la entrada

Saludos!
  #19 (permalink)  
Antiguo 18/01/2013, 11:39
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: [Aporte] Detectar Navegador, Versión y Sistema Operativo

DoHITB Esta interesante tu articulo pero decae en el mismo problema que todas las funciones expuestas, que solo detecta los principales navegadores y una porcion pequeña de info. buscando encontre esta pagina:

http://www.useragentstring.com/?getJSON=all

Analiza TODOS los tipos existentes de navegadores y dispositivos que pueden verse en esta lista:

http://www.useragentstring.com/pages/All/

y los muestra como array, es simplemente genial, cuando descubra como funciona lo publico, esa sin duda es LA SOLUCION que dejara conforme hasta los mas exigentes. XD
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #20 (permalink)  
Antiguo 18/01/2013, 12:35
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años
Puntos: 33
Respuesta: [Aporte] Detectar Navegador, Versión y Sistema Operativo

Quizás con cURL o file_get_contents podrás sacar algo en claro... no lo se (tendría que probarlo).

De todas maneras, fíjate en esto:

Estadísticas de uso de navegadores

El 99% de la gente usa uno de los navegadores que comparo en mi función (en concreto: IE, FF, chrome, safari, opera).

Saludos
  #21 (permalink)  
Antiguo 18/01/2013, 13:37
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: [Aporte] Detectar Navegador, Versión y Sistema Operativo

Si hacemos una proyeccion de esas estadisticas en 2015 menos del 1% usar IE.......

Ohhhhhh YEAHHHHHHHHHH :EverythingWentBetterThanExpected: en el 2015 vamos a poder trabajar humanamente XD
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #22 (permalink)  
Antiguo 18/01/2013, 13:40
 
Fecha de Ingreso: septiembre-2012
Ubicación: Buenos aires
Mensajes: 110
Antigüedad: 11 años, 6 meses
Puntos: 9
Respuesta: [Aporte] Detectar Navegador, Versión y Sistema Operativo

@GatorV si inicias la funcion Iniciar(); las variables van a contener los datos... y si no se puede editar para obtener solo un return y listo :p
  #23 (permalink)  
Antiguo 18/01/2013, 13:47
 
Fecha de Ingreso: septiembre-2012
Ubicación: Buenos aires
Mensajes: 110
Antigüedad: 11 años, 6 meses
Puntos: 9
Respuesta: [Aporte] Detectar Navegador, Versión y Sistema Operativo

Si hacemos estadisticas en el 2014 todos los vamos a ir a destruir microsoft, o por lo menos la parte que se encarga de ie, igual ie10 es más rapido que chrome, y soporta muy bien xhr level 2, css3 y html5 esta muy bueno xD
  #24 (permalink)  
Antiguo 18/01/2013, 13:58
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: [Aporte] Detectar Navegador, Versión y Sistema Operativo

IE es una mierda, nacio como mierda y morira como tal, pueden enmascararlo todo lo que quieras pero sigue siendo una garcha esteril, te doy un ejemplo?

Navegadores aceptables:
Código CSS:
Ver original
  1. background: -webkit-linear-gradient(top, #15c5e8, #1654f0);
Varia el prefijo segun el navegador pero se respeta masomenos el estantar.

En IE:
Código CSS:
Ver original
  1. filter: progid:DXImageTransform.Microsoft.gradient(startColorStr=#15c5e8, endColorStr=#1654f0);

Microsoft, especialista en hacer complicadas las cosas simples se abstine de hacer algo que sea meramente similar a lo que disen los estandares.
Lo siento pero nunca defendere a IE mientras tenga cosas como estas, sin contar el I6 que viene con XP y que la mayormente la gente usa por lo menos en mi ciudad ohh god eso si es un cancer.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #25 (permalink)  
Antiguo 18/01/2013, 14:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: [Aporte] Detectar Navegador, Versión y Sistema Operativo

Cita:
Iniciado por underwebinfo Ver Mensaje
@GatorV si inicias la funcion Iniciar(); las variables van a contener los datos... y si no se puede editar para obtener solo un return y listo :p
No, en PHP las variables no se manejan así, para eso tendrían que ser globales. Primero aprende un poco de PHP y del alcance de las variables, una variable declarada dentro de una función no puede existir a fuera a menos que la declares como global.
  #26 (permalink)  
Antiguo 18/01/2013, 14:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: [Aporte] Detectar Navegador, Versión y Sistema Operativo

Cita:
Iniciado por underwebinfo Ver Mensaje
@GatorV si inicias la funcion Iniciar(); las variables van a contener los datos... y si no se puede editar para obtener solo un return y listo :p
¿Lees lo que dices?

Por eso te digo que aún no has aprendido lo suficiente como para aportar a la comunidad, se aprecia la intención pero antes de compartir conocimiento deberías fundamentar el tuyo primero.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #27 (permalink)  
Antiguo 19/01/2013, 04:14
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años
Puntos: 33
Respuesta: [Aporte] Detectar Navegador, Versión y Sistema Operativo

Cita:
Iniciado por underwebinfo Ver Mensaje
Si hacemos estadisticas en el 2014 todos los vamos a ir a destruir microsoft, o por lo menos la parte que se encarga de ie, igual ie10 es más rapido que chrome, y soporta muy bien xhr level 2, css3 y html5 esta muy bueno xD
Yo estoy probando IE10 en WIN7... y a ver, te comento un poco mi experiencia:

- Velocidad: mejorada considerablemente

Órden (para mi) en velocidad: Chrome, IE10, FF

- Soporte CSS: ha mejorado en algunas cosas, y ha empeorado en otras:

* Bordes redondos: los acepta
* Degradados: no los acepta (son dos ejemplos que me encontré ayer)

El resto de mejoras aún no las he podido ver...

Saludos

Etiquetas: browsers
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 02:36.