Ver Mensaje Individual
  #15 (permalink)  
Antiguo 13/01/2010, 11:31
Avatar de julianmejio
julianmejio
 
Fecha de Ingreso: agosto-2005
Ubicación: Medellín, Antioquia
Mensajes: 88
Antigüedad: 19 años, 3 meses
Puntos: 3
Respuesta: quiero limitar los navegadors por problemas de contabilidad

Hola. Aquí te doy un script que acabo de crear para hacer lo que estás pensando; sin embargo te aconsejo que por accesibilidad y semántica web, cambies ese código (y estilos CSS) que es incompatible en otros navegadores (no aplica para IE 6.0)

NOTA: Sólo lo he probado con MSIE y Firefox. Doy por entendido que funcionará igualmente con Safari, Opera y los que quieras. Recuerda que el complemento es de la forma 'Navegador/Version' o 'Navegador Version'. Para obtener el complemento de navegador de Safari u Opera debes ver la cadena user-agent de cada navegador. Yo no los puse porque no los tengo instalados, y no los puedo ver. Espero que te sirva.

Código PHP:
/*
 * $uaAdmitidos: array ->
 * Complemento: nombre del complemento del navegador, ya sea un navegador en sí (MSIE, Firefox, Opera, etc)
 * Versión: versión base del complemento
 * Coindicencia:
 *    'E': Coincidencia exacta de la versión del complemento.
 *  'M': La versión debe ser igual o mayor a la especificada.
 *  'm': La versión debe ser igual o menor a la especificada.
 * Debes especificar los navegadores compatibles en este formato dentro de este arreglo.
 */
$uaAdmitidos = array
(
    array(
'Complemento' => 'Firefox''Version' => '3.5.6''Coincidencia' => 'M')
);
// Contiene el estado de compatiblidad del navegador.
$navegadorCompatible false;
// Inicialización de la variable que contendrá los complementos compatibles (devueltos por la cadena user-agent del navegador)
$complementosNavegador null;
// Recuperación de los complementos y sus respectivas versiones.
preg_match_all('|([\w]+)[\s\/]([\d.]+)|'$_SERVER['HTTP_USER_AGENT'],  $complementosNavegador);
// Visualización (sólo para depurar)
//var_dump($complementosNavegador);
// Comprobación de complementos
for($i 0$i count($complementosNavegador[1]); $i++)
{
    
// Salir del ciclo si el navegador ya es compatible.
    
if($navegadorCompatible)
        break;
    
// Por cada complemento recuperado de la cadena user-agent del navegador
    
foreach($uaAdmitidos as $uaAdmitido)
        if(
$uaAdmitido['Complemento'] == $complementosNavegador[1][$i]) // Si concuerda con alguno especificado
            
switch($uaAdmitido['Coincidencia']) // Verificar la versión
            
{
                case 
'E'// Para coincidencia exacta
                    
if($complementosNavegador[2][$i] == $uaAdmitido['Version'])
                        
$navegadorCompatible true;
                    break;
                case 
'M'// Para coincidencia igual o mayor
                    
if($complementosNavegador[2][$i] >= $uaAdmitido['Version'])
                        
$navegadorCompatible true;
                    break;
                case 
'm'// Para coincidencia igual o menor
                    
if($complementosNavegador[2][$i] <= $uaAdmitido['Version'])
                        
$navegadorCompatible true;
                    break;
            }
}
if(!
$navegadorCompatible// Acciones tomadas respecto a la compatiblidad.
{
    echo 
"Debes utilizar un navegador compatible";
    exit;


Última edición por julianmejio; 13/01/2010 a las 11:34 Razón: Aclarar estado de código.