Foros del Web » Programando para Internet » PHP »

Reconocer explorador de internet

Estas en el tema de Reconocer explorador de internet en el foro de PHP en Foros del Web. BBHUenas!!! Consulto: hay alguna manera que por medio de php me reconozca enm que tipo de explorador estoy navegando??? gracias!!! Ariel...
  #1 (permalink)  
Antiguo 12/05/2006, 19:05
 
Fecha de Ingreso: diciembre-2004
Mensajes: 197
Antigüedad: 13 años
Puntos: 1
Reconocer explorador de internet

BBHUenas!!!

Consulto: hay alguna manera que por medio de php me reconozca enm que tipo de explorador estoy navegando???


gracias!!!

Ariel
__________________
Diseñador y Desarrolador en Proyecto81 WebStudio
  #2 (permalink)  
Antiguo 12/05/2006, 21:05
 
Fecha de Ingreso: noviembre-2005
Mensajes: 112
Antigüedad: 12 años, 1 mes
Puntos: 2
Con $_SERVER["HTTP_USER_AGENT"] lo podes ver.

El IE es por ej.: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; {77BB8E71-2859-2488-FB73-E6DE8D934973}; SV1; (R1 1.5); .NET CLR 2.0.50727)

Mozilla Firefox: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3

Siempre cambian según la versión, pero la varible que te da el navegador es esa.
__________________
PuertaX.Net
  #3 (permalink)  
Antiguo 12/05/2006, 22:54
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 13 años
Puntos: 2
¿Que tal?

A mi también me sirve esto... todavia no me puse con el tema pero es algo que necesito para lanzar mi sitio debidamente.

Se me ocurre... cada version, como dice FEDERICO, trae un string diferente. ¿Acaso los diferentes SP (1 o 2) de explorer, o sub versiones (1.4.2 / 1.5.1) de Firefox también?

En tal caso... se me ocurre que seria mejor hacer algo asi (y si me equivoco por favor corrijanme):

1. Tomar el string que dá $_SERVER["HTTP_USER_AGENT"].
2. Tomar los primeros 11 caracteres y comprobar:

Mozilla/4.0 <= Es explorer
Mozilla/5.0 <= Es Firefox
Otros <= No esta listado, me mando un email con el $_SERVER["HTTP_USER_AGENT"] para buscar en google que browser es y agregarlo si es necesario.

¿Estará bien eso o pueden haber otros browsers con la misma salida?

Si eso va puedo preparar una función y postearla en las FAQ.

Saludos!
  #4 (permalink)  
Antiguo 13/05/2006, 02:40
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Revizar tambien getbrowser()

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 13/05/2006, 14:05
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 14 años, 11 meses
Puntos: 8
Código PHP:
function _get_browser()
{
  
$browser = array ( //reversed array
   
"OPERA",
   
"MSIE",            // parent
   
"NETSCAPE",
   
"FIREFOX",
   
"SAFARI",
   
"KONQUEROR",
   
"MOZILLA"        // parent
  
);
  
  
$info[browser] = "OTHER";
   
  foreach (
$browser as $parent)  
  {
   if ( (
$s strpos(strtoupper($_SERVER['HTTP_USER_AGENT']), $parent)) !== FALSE )
   {            
     
$f $s strlen($parent);
     
$version substr($_SERVER['HTTP_USER_AGENT'], $f5);
     
$version preg_replace('/[^0-9,.]/','',$version);
               
     
$info[browser] = $parent;
     
$info[version] = $version;
     break; 
// first match wins
   
}
  }
  
  return 
$info;

  #6 (permalink)  
Antiguo 13/05/2006, 18:52
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 13 años, 10 meses
Puntos: 5
Este ultimo esta muy bueno.-
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com
  #7 (permalink)  
Antiguo 13/05/2006, 19:27
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 13 años, 10 meses
Puntos: 5
Bueno amigos esto fue Googleando :
Que le aprobechen:
Código PHP:
<?php
/*****************************************************************

    File name: browser.php
    Author: Gary White
    Last modified: November 10, 2003
    
    **************************************************************

    Copyright (C) 2003  Gary White
    
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License
    as published by the Free Software Foundation; either version 2
    of the License, or (at your option) any later version.
    
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details at:
    http://www.gnu.org/copyleft/gpl.html

    **************************************************************

    Browser class
    
    Identifies the user's Operating system, browser and version
    by parsing the HTTP_USER_AGENT string sent to the server
    
    Typical Usage:
    
        require_once($_SERVER['DOCUMENT_ROOT'].'/include/browser.php');
        $br = new Browser;
        echo "$br->Platform, $br->Name version $br->Version";
    
    For operating systems, it will correctly identify:
        Microsoft Windows
        MacIntosh
        Linux

    Anything not determined to be one of the above is considered to by Unix
    because most Unix based browsers seem to not report the operating system.
    The only known problem here is that, if a HTTP_USER_AGENT string does not
    contain the operating system, it will be identified as Unix. For unknown
    browsers, this may not be correct.
    
    For browsers, it should correctly identify all versions of:
        Amaya
        Galeon
        iCab
        Internet Explorer
            For AOL versions it will identify as Internet Explorer (AOL) and the version
            will be the AOL version instead of the IE version.
        Konqueror
        Lynx
        Mozilla
        Netscape Navigator/Communicator
        OmniWeb
        Opera
        Pocket Internet Explorer for handhelds
        Safari
        WebTV
*****************************************************************/

class browser{

    var 
$Name "Unknown";
    var 
$Version "Unknown";
    var 
$Platform "Unknown";
    var 
$UserAgent "Not reported";
    var 
$AOL false;

    function 
browser(){
        
$agent $_SERVER['HTTP_USER_AGENT'];

        
// initialize properties
        
$bd['platform'] = "Unknown";
        
$bd['browser'] = "Unknown";
        
$bd['version'] = "Unknown";
        
$this->UserAgent $agent;

        
// find operating system
        
if (eregi("win"$agent))
            
$bd['platform'] = "Windows";
        elseif (
eregi("mac"$agent))
            
$bd['platform'] = "MacIntosh";
        elseif (
eregi("linux"$agent))
            
$bd['platform'] = "Linux";
        elseif (
eregi("OS/2"$agent))
            
$bd['platform'] = "OS/2";
        elseif (
eregi("BeOS"$agent))
            
$bd['platform'] = "BeOS";

        
// test for Opera        
        
if (eregi("opera",$agent)){
            
$val stristr($agent"opera");
            if (
eregi("/"$val)){
                
$val explode("/",$val);
                
$bd['browser'] = $val[0];
                
$val explode(" ",$val[1]);
                
$bd['version'] = $val[0];
            }else{
                
$val explode(" ",stristr($val,"opera"));
                
$bd['browser'] = $val[0];
                
$bd['version'] = $val[1];
            }

        
// test for WebTV
        
}elseif(eregi("webtv",$agent)){
            
$val explode("/",stristr($agent,"webtv"));
            
$bd['browser'] = $val[0];
            
$bd['version'] = $val[1];
        
        
// test for MS Internet Explorer version 1
        
}elseif(eregi("microsoft internet explorer"$agent)){
            
$bd['browser'] = "MSIE";
            
$bd['version'] = "1.0";
            
$var stristr($agent"/");
            if (
ereg("308|425|426|474|0b1"$var)){
                
$bd['version'] = "1.5";
            }

        
// test for NetPositive
        
}elseif(eregi("NetPositive"$agent)){
            
$val explode("/",stristr($agent,"NetPositive"));
            
$bd['platform'] = "BeOS";
            
$bd['browser'] = $val[0];
            
$bd['version'] = $val[1];

        
// test for MS Internet Explorer
        
}elseif(eregi("msie",$agent) && !eregi("opera",$agent)){
            
$val explode(" ",stristr($agent,"msie"));
            
$bd['browser'] = $val[0];
            
$bd['version'] = $val[1];
        
        
// test for MS Pocket Internet Explorer
        
}elseif(eregi("mspie",$agent) || eregi('pocket'$agent)){
            
$val explode(" ",stristr($agent,"mspie"));
            
$bd['browser'] = "MSPIE";
            
$bd['platform'] = "WindowsCE";
            if (
eregi("mspie"$agent))
                
$bd['version'] = $val[1];
            else {
                
$val explode("/",$agent);
                
$bd['version'] = $val[1];
            }
            
        
// test for Galeon
        
}elseif(eregi("galeon",$agent)){
            
$val explode(" ",stristr($agent,"galeon"));
            
$val explode("/",$val[0]);
            
$bd['browser'] = $val[0];
            
$bd['version'] = $val[1];
            
        
// test for Konqueror
        
}elseif(eregi("Konqueror",$agent)){
            
$val explode(" ",stristr($agent,"Konqueror"));
            
$val explode("/",$val[0]);
            
$bd['browser'] = $val[0];
            
$bd['version'] = $val[1];
            
        
// test for iCab
        
}elseif(eregi("icab",$agent)){
            
$val explode(" ",stristr($agent,"icab"));
            
$bd['browser'] = $val[0];
            
$bd['version'] = $val[1];

        
// test for OmniWeb
        
}elseif(eregi("omniweb",$agent)){
            
$val explode("/",stristr($agent,"omniweb"));
            
$bd['browser'] = $val[0];
            
$bd['version'] = $val[1];

        
// test for Phoenix
        
}elseif(eregi("Phoenix"$agent)){
            
$bd['browser'] = "Phoenix";
            
$val explode("/"stristr($agent,"Phoenix/"));
            
$bd['version'] = $val[1];
        
        
// test for Firebird
        
}elseif(eregi("firebird"$agent)){
            
$bd['browser']="Firebird";
            
$val stristr($agent"Firebird");
            
$val explode("/",$val);
            
$bd['version'] = $val[1];
            
        
// test for Firefox
        
}elseif(eregi("Firefox"$agent)){
            
$bd['browser']="Firefox";
            
$val stristr($agent"Firefox");
            
$val explode("/",$val);
            
$bd['version'] = $val[1];
            
      
// test for Mozilla Alpha/Beta Versions
        
}elseif(eregi("mozilla",$agent) && 
            
eregi("rv:[0-9].[0-9][a-b]",$agent) && !eregi("netscape",$agent)){
            
$bd['browser'] = "Mozilla";
            
$val explode(" ",stristr($agent,"rv:"));
            
eregi("rv:[0-9].[0-9][a-b]",$agent,$val);
            
$bd['version'] = str_replace("rv:","",$val[0]);
            
        
// test for Mozilla Stable Versions
        
}elseif(eregi("mozilla",$agent) &&
            
eregi("rv:[0-9]\.[0-9]",$agent) && !eregi("netscape",$agent)){
            
$bd['browser'] = "Mozilla";
            
$val explode(" ",stristr($agent,"rv:"));
            
eregi("rv:[0-9]\.[0-9]\.[0-9]",$agent,$val);
            
$bd['version'] = str_replace("rv:","",$val[0]);
        
        
// test for Lynx & Amaya
        
}elseif(eregi("libwww"$agent)){
            if (
eregi("amaya"$agent)){
                
$val explode("/",stristr($agent,"amaya"));
                
$bd['browser'] = "Amaya";
                
$val explode(" "$val[1]);
                
$bd['version'] = $val[0];
            } else {
                
$val explode("/",$agent);
                
$bd['browser'] = "Lynx";
                
$bd['version'] = $val[1];
            }
        
        
// test for Safari
        
}elseif(eregi("safari"$agent)){
            
$bd['browser'] = "Safari";
            
$bd['version'] = "";

        
// remaining two tests are for Netscape
        
}elseif(eregi("netscape",$agent)){
            
$val explode(" ",stristr($agent,"netscape"));
            
$val explode("/",$val[0]);
            
$bd['browser'] = $val[0];
            
$bd['version'] = $val[1];
        }elseif(
eregi("mozilla",$agent) && !eregi("rv:[0-9]\.[0-9]\.[0-9]",$agent)){
            
$val explode(" ",stristr($agent,"mozilla"));
            
$val explode("/",$val[0]);
            
$bd['browser'] = "Netscape";
            
$bd['version'] = $val[1];
        }
        
        
// clean up extraneous garbage that may be in the name
        
$bd['browser'] = ereg_replace("[^a-z,A-Z]"""$bd['browser']);
        
// clean up extraneous garbage that may be in the version        
        
$bd['version'] = ereg_replace("[^0-9,.,a-z,A-Z]"""$bd['version']);
        
        
// check for AOL
        
if (eregi("AOL"$agent)){
            
$var stristr($agent"AOL");
            
$var explode(" "$var);
            
$bd['aol'] = ereg_replace("[^0-9,.,a-z,A-Z]"""$var[1]);
        }
        
        
// finally assign our properties
        
$this->Name $bd['browser'];
        
$this->Version $bd['version'];
        
$this->Platform $bd['platform'];
        
$this->AOL $bd['aol'];
    }
}
?>
...y aqui va el mio person! :
Código PHP:
<?
$iexp 
$_SERVER[HTTP_USER_AGENT];
if(
strstr($iexp,"MSIE")){
echo 
"Usted usa el Gran Internet Explorer"// :)!
  
}
if(
strstr($iexp,"mozilla")){
echo 
"Usted usa Firefox";
  }
?>
Saludos.-
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com

Última edición por xyyy7; 13/05/2006 a las 19:32
  #8 (permalink)  
Antiguo 13/05/2006, 21:58
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 13 años, 5 meses
Puntos: 4
que importa tantos detalles del navegador??? aca veo codigos demasiados complicados y otros que no sirven para nada, este ultimo por ejemplo... preguntar solo si existe "MSIE" en $_SERVER['HTTP_USER_AGENT'] no sirve ya que Opera cae en esta situación. tampoco preguntar si existe "mozilla" ya que en 99% de los navegadores dicen Mozilla al principio
__________________
Internet Explorer SuckS
Download FireFox
  #9 (permalink)  
Antiguo 14/05/2006, 06:07
Avatar de Artdeco  
Fecha de Ingreso: abril-2005
Ubicación: Barcelona
Mensajes: 165
Antigüedad: 12 años, 8 meses
Puntos: 1
Y Opera tiene la posibilidad de presentarse como Internet Explorer o Mozilla, así que ya hay un buen problema con Opera.

Yo digo que, si se hacen las cosas bien, en XHTML estricto y sin errores, no hay por qué hacer estas cosas. Que Internet Explorer muestre los estándares mal, ya es problema de los que usan Internet Explorer ; )
  #10 (permalink)  
Antiguo 14/05/2006, 17:45
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 13 años
Puntos: 2
EY QUE BUENO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

GRACIAS por poner los scripts, estan muy buenos!! :)
  #11 (permalink)  
Antiguo 14/05/2006, 17:55
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 13 años
Puntos: 2
Carajodida,
Se supone a esto es el principio... no creo que todos vayan a utilizar codigos tan extensos en cada una de las paginas.. en mi caso por ej, no puedo, pq mi sitio (Si todo sale como lo esperamos) va a tener muchos usuarios y bueno.. OBIVO, se va a notar el tiempo de carga.

Pero es bueno tener scripts complejos para sacar datos utiles de cada uno y armar algo mas reducido... sobre todo en casos como el mio que solo me interesa saber si el usuario está usando algo inferior a IE 6 (por el uso 100% de divs / css en el sitio).

Igual, sirve tu aporte... tener en cuenta lo que decis de OPERA sirve... y claro está. Si YA TENES un script más reducido aportalo pls :)

Saludos.
  #12 (permalink)  
Antiguo 14/05/2006, 18:35
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 13 años, 10 meses
Puntos: 5
Cita:
Iniciado por SiR.CARAJ0DIDA
que importa tantos detalles del navegador???
Tal vez para mucho de nosotros SI! nos importe la gran cantidad de detalles que podamos recoger del cliente.- y el uso que le podamos dar.- cada quien le da su importancia personal.-

Cita:
Iniciado por SiR.CARAJ0DIDA
aca veo codigos demasiados complicados y otros que no sirven para nada, este ultimo por ejemplo...
En lo personal no lo veo tan complicado.- todos en su mayoría tienen fundamentos de PHP -> getbrowser() "puedes echarle un vistazo" y con respecto al ultimo ejemplo.- se considera tu opinión; la verdad como no uso opera, no sabia ese detalle... bueno como se ve que eres un experto en la materia podrías darnos una mano entonces y aportar tu código que haga complemento a nuestros códigos...

Saludos.-
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com
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




La zona horaria es GMT -6. Ahora son las 08:10.