Foros del Web » Programando para Internet » PHP »

Buscar la familia del Navegador

Estas en el tema de Buscar la familia del Navegador en el foro de PHP en Foros del Web. Hola a todos/todas: Necesito extraer un determinado valor del string que obtengo cuando pregunto el navegador mediante $navegador = $_SERVER['HTTP_USER_AGENT']; la pregunta me devuelve un ...
  #1 (permalink)  
Antiguo 07/03/2012, 12:03
Avatar de Rankxerox1984  
Fecha de Ingreso: septiembre-2010
Mensajes: 253
Antigüedad: 14 años, 3 meses
Puntos: 4
Buscar la familia del Navegador

Hola a todos/todas:

Necesito extraer un determinado valor del string que obtengo cuando pregunto el navegador mediante $navegador = $_SERVER['HTTP_USER_AGENT'];
la pregunta me devuelve un string como este Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)
o este otro Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11
Estos strings los alojo en una variable $Navegador que utilizo para condicionar los CSS. Hasta aqui todo funciona.
El problema es que cada vez que el señor Google o el Señor Firefox o caulquier otro señor hace un Update del navegador varia el valor del string y entonces el CSS no se aplica.
Se me ha ocurrido que la solución podría pasar por eliminar todos los caracteres excepto el nombre de la familia del Navegador y la versión general, Por ejemplo MISIE 9 o Chrome 17 entonces el CSS no se vería afectado por los Updates y "sólo" tendría que preocuparme por los cambios de version principal.
He estado buscando pero no se me ocurre como podría hacerlo, será la hora, ¿alguien puede decirme como se hace lo que deseo?
Es más, se puede ¿Verdad?

Muchas gracias por la paciencia,
__________________
J.
¿Dónde está la tecla ‘ANY’?
(H. Simpson)
  #2 (permalink)  
Antiguo 07/03/2012, 12:25
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 11 meses
Puntos: 209
Respuesta: Buscar la familia del Navegador

y para que quieres hacer css por cada familia de navegadores?, lo que te ha de importar es el motor que use, pero voy un poco más lejos, si respetas los estándares (no digo que no lo hagas), todo te irá bien, salvo con los ie, pero ya para eso no necesitas diferencias con php

tienes los condicionales
__________________
aconcaguaestudio.com
  #3 (permalink)  
Antiguo 07/03/2012, 13:03
Avatar de Rankxerox1984  
Fecha de Ingreso: septiembre-2010
Mensajes: 253
Antigüedad: 14 años, 3 meses
Puntos: 4
Respuesta: Buscar la familia del Navegador

Es que el problema es justo con el ##to IE, más concretamente con IE 7 y 8. Pero además existe la cuestion de las variaciones de los Updates.
Efectivamente, si usas estándares (yo lo intento) en todos se ve bien.
Sin embargo hay pequeños problemas de visualizaciòn que ajustar individualmente y para eso me viene bien idnetificar el navegador (se que el sistema es antiguo, pero es el que sé y Modernzr no me la he estudiado todavía).
En resumen, ¿como puedo acotar la identificaciòn a la familia?, el motor tampoco me es útil porque varios navegadores usan el mismo motor y sin embargo las variaciones persisten.

Gracias de todos modos por tu ayuda,
__________________
J.
¿Dónde está la tecla ‘ANY’?
(H. Simpson)
  #4 (permalink)  
Antiguo 07/03/2012, 13:06
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 11 meses
Puntos: 209
Respuesta: Buscar la familia del Navegador

Modernzr es solo usarlo, te paso un proyecto que me parece genial y te evitará todas estas cosas

http://html5boilerplate.com/, para mi sencillamente lo mejor que hay ahora (incluye Modernzr)
__________________
aconcaguaestudio.com
  #5 (permalink)  
Antiguo 07/03/2012, 16:34
Avatar de Rankxerox1984  
Fecha de Ingreso: septiembre-2010
Mensajes: 253
Antigüedad: 14 años, 3 meses
Puntos: 4
Respuesta: Buscar la familia del Navegador

Muchas gracias de nuevo por BoilerPlate.
Prometo estudiarmelo (Por cierto ¿No sabrás de un enlace a un tutorial para Windows?).
Pero ¿Sabes como puedo acotar la identificaciòn a la familia del Navegador?

Disculpa mi insistencia
__________________
J.
¿Dónde está la tecla ‘ANY’?
(H. Simpson)
  #6 (permalink)  
Antiguo 07/03/2012, 16:42
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 14 años, 4 meses
Puntos: 202
Respuesta: Buscar la familia del Navegador

en cuanto a la primera pregunta incial.
¿Has probado a usar la función get_browser?
Te devuelve un array en vez de un string y usando la key browser ya tienes el nombre del navegador idependiente de sus versiones.

En el manual hay un ejemplo muy sencillo explicando el array que devuelve y cada key:

http://www.php.net/manual/en/functio...p#example-3443

Saludos.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #7 (permalink)  
Antiguo 08/03/2012, 06:13
Avatar de Rankxerox1984  
Fecha de Ingreso: septiembre-2010
Mensajes: 253
Antigüedad: 14 años, 3 meses
Puntos: 4
Respuesta: Buscar la familia del Navegador

Muchas gracias por los consejos recibidos, finalmente he podido resolver el asunto de la identificación del navegador (muchas gracias iviamontes, pero utilizaré tus indicaciones para otro proyecto) con la indicación de IEKK.
Queda un pequeño fleco suelto respecto de browscap y su funcionamiento en servidores que no lo tengan habilitado, que espero resolver en los próximos días.
Mientras tanto la cosa funciona y queda así:

Código PHP:
<?php 

//Compruebo errores
//error_reporting(E_ALL & ~E_NOTICE); 
//ini_set("display_errors", 1);

//capturo la versión completa del explorer (para ello debe estar instalada en el servidor la versión de Browscap.ini 
//inidcada en http://browsers.garykeith.com/downloads.asp e instalada en php/extras 
//con la entrada de php.ini apuntando al directorio donde se encuentra
//Obtengo un Array mediante:

$browser get_browser(nulltrue);
//Selecciono los campos browser y majorver del array mediante su asignación a variables

$Sail1=$browser['browser'];
$Sail2=$browser['majorver'];

//concateno los dos valores para obtener el nombre del navegador y su versión principal 
//contenidos en una única variable $navegador que uso para asignar las propiedades específicas de CSS

$Navegador=$Sail1.$Sail2;


 
switch(
$Navegador) {  
 
        
//..Si es:
        //MS Internet Explorer 8.0
        
        
case "IE8":
                echo 
'<link type="text/css" rel="stylesheet" href="Estilos/estilosCSS3_IE8.css">';
        break;  
    
        
//MS Internet Explorer 7.0
        
case "IE7":
                echo 
'<link type="text/css" rel="stylesheet" href="Estilos/estilosCSS3_IE7.css">';
        break;

        
//MS Internet Explorer9 64 Bits
        
case "IE9":
                echo 
'<link type="text/css" rel="stylesheet" href="Estilos/estilosCSS3_IE9.css">';
        break;

        
//Google Chrome
        
case  "Chrome17";

                echo 
'<link type="text/css" rel="stylesheet" href="Estilos/estilosCSS3_ChR.css">';
        break;    

        
//Opera 
        
case "Opera11":
                echo 
'<link type="text/css" rel="stylesheet" href="../Estilos/estilosCSS3_OP.css">';
        break;

        
//Safari
        
case "Safari5":
                echo 
'<link type="text/css" rel="stylesheet" href="Estilos/estilosCSS3_SF.css">';
        break;

        
//Mozilla/Firefox
        
case "Firefox10":
                echo 
'<link type="text/css" rel="stylesheet" href="Estilos/estilosCSS3 - FF.css">';
        break;

        default:

           echo 
'<link type="text/css" rel="stylesheet" href="Estilos/estilosCSS3.css">';
         break;

}

?>
Este fichero hace la selección las hojas CSS específicas para cada navegador, y este otro (que a lo mejor podía ir junto) da un aviso de actualización para las versiones no compatibles con CSS3

Código PHP:
<?php 

//Compruebo errores
//error_reporting(E_ALL & ~E_NOTICE); 
//ini_set("display_errors", 1);

//capturo la versión completa del explorer (para ello debe estar instalada en el servidor la versión de Browscap.ini 
//inidcada en http://browsers.garykeith.com/downloads.asp e instalada en php/extras 
//con la entrada de php.ini apuntando al directorio donde se encuentra
//Obtengo un Array mediante:

$browser get_browser(nulltrue);
//Selecciono los campos browser y majorver del array mediante su asignación a variables

$Sail1=$browser['browser'];
$Sail2=$browser['majorver'];

//concateno los dos valores para obtener el nombre del navegador y su versión principal 
//contenidos en una única variable $navegador que uso para asignar presentar la recomendación de actualizar en caso de navegadores antiguos

$Navegador=$Sail1.$Sail2;

//MS Internet Explorer 8.0 e inferiores
if ($Navegador <= "IE8") {
   include(
'textos/Footer/UpgradeExplorer.txt');
 
}

?>
Seguro que hay soluciones mejores pero esta funciona

Muchas gracias de nuevo,
__________________
J.
¿Dónde está la tecla ‘ANY’?
(H. Simpson)

Etiquetas: familia, html, navegador, variables
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 18:25.