Foros del Web » Programando para Internet » PHP »

Actualizar scritp

Estas en el tema de Actualizar scritp en el foro de PHP en Foros del Web. Hola a todos nuevamente, hace un tiempo trabaje con un script para saber el tipo de explorador y la version del usuario que visita el ...
  #1 (permalink)  
Antiguo 09/09/2014, 00:47
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Pregunta Actualizar scritp

Hola a todos nuevamente, hace un tiempo trabaje con un script para saber el tipo de explorador y la version del usuario que visita el sitio, pero ahora resulta que hay nuevos metodos de visita y son las telefonos. Trate de actualizarlo pero funciona, alguien me puede ayudar! Gracias


Código PHP:
function getBrowser()
{
    
$u_agent     $_SERVER['HTTP_USER_AGENT'];
    
$bname         'n/i';
    
$platform     'n/i';
    
$version    'none';

    
// En primer lugar obtener la plataforma.
    
if (preg_match('/linux/i'$u_agent)) {
        
$platform 'Linux';
    }
    elseif (
preg_match('/macintosh|mac os x/i'$u_agent)) {
        
$platform 'Mac';
    }
    elseif (
preg_match('/firefox/i'$u_agent)) {
        
$platform 'Firefox';
    }
    elseif (
preg_match('/windows|win32/i'$u_agent)) {
        
$platform 'Windows';
    }
    elseif (
preg_match('/samsung/i'$u_agent)) {
        
$platform 'Samsung';
    }
    elseif (
preg_match('/android/i'$u_agent)) {
        
$platform 'Android';
    }
   
    
// Siguiente obtener el nombre del agente de usuario por separado.
    
    
if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent))
    {
        
$bname 'Internet Explorer';
        
$ub "MSIE";
    }
    elseif(
preg_match('/Firefox/i',$u_agent))
    {
        
$bname 'Mozilla Firefox';
        
$ub "Firefox";
    }
    elseif(
preg_match('/Chrome/i',$u_agent))
    {
        
$bname 'Google Chrome';
        
$ub "Chrome";
    }
    elseif(
preg_match('/Safari/i',$u_agent))
    {
        
$bname 'Apple Safari';
        
$ub "Safari";
    }
    elseif(
preg_match('/Opera/i',$u_agent))
    {
        
$bname 'Opera';
        
$ub "Opera";
    }
    elseif(
preg_match('/Netscape/i',$u_agent))
    {
        
$bname 'Netscape';
        
$ub "Netscape";
    }
    elseif(
preg_match('/Android/i',$u_agent))
    {
        
$bname 'Andriod';
        
$ub "Andriod";
    }
    elseif(
preg_match('/Samsung/i',$u_agent))
    {
        
$bname 'Samsung';
        
$ub "Samsung";
    }
   
    
// Finalmente obtener el número de versión correcto.
    
$known = array('Version'$ub'other');
    
$pattern '#(?<browser>'.join('|'$known).')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';
    if (!
preg_match_all($pattern$u_agent$matches)) {
        
// No tenemos el número correspondiente sólo seguir
    
}
   
    
// see how many we have
    
$i count($matches['browser']);
    if (
$i != 1) {
        
//we will have two since we are not using 'other' argument yet
        //see if version is before or after the name
        
if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){
            
$version$matches['version'][0];
        }
        else {
            
$version$matches['version'][1];
        }
    }
    else {
        
$version$matches['version'][0];
    }
   
    
// check if we have a number
    
if ($version==null || $version=="") {$version="?";}
   
    return array(
        
'userAgent' => $u_agent,
        
'name'      => $bname,
        
'version'   => $version,
        
'platform'  => $platform,
        
'pattern'   => $pattern
    
);
}

//now try it
$ua getBrowser();
$yourbrowser "Browser: " $ua['name'] . " " $ua['version'] . " on " $ua['platform'] . " <br> " $ua['userAgent']."";
echo 
$yourbrowser
__________________
Zreep
  #2 (permalink)  
Antiguo 09/09/2014, 01:41
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: Actualizar scritp

Has pensado en cambiar la lógica de tu aplicación para que el user agent se lea por javascript? Puedes pasarlo por ajax en la primera llamada y guardarlo en una variable de session.

Ventajas:
  1. No sólo controlas el user-agent (el usuario puede modificarlo al gusto), sino las capacidades de cada navegador.
  2. El mayor problema de los navegadores está en la ejecución de código de lado cliente (css, javascript, html), pues cada navegador tiene sus particularidades. Por lo general, el servidor no entiende de navegadores, se "limita" a recibir peticiones, procesarlas y devolver un resultado.
  3. Con una simple librería llamada modernizr.js puedes detectar lo que quieras con un par de líneas, y basta con tener el fichero actualizado para generar la compatibilidad total de detección de navegadores. Tú no tienes que hacer nada más.

Inconvenientes:
  1. No conozco el objetivo de hacerlo con PHP, pero si sigues necesitando que el servidor se entere del navegador que visita la web, lo mejor es que pases en la primera llamada a la página la variable por AJAX y lo guardes en una sesión.

Código Javascript:
Ver original
  1. $.ajax({
  2.     type: "POST",
  3.     url:  "ajax/guardar.php",
  4.     data: { "ua": "Firefox", "version": 29, "platform": 'Linux i686' }
  5. }).done(function( msg ) {
  6.     alert("Mensaje al terminar: " + msg); // terminada la llamada
  7. }).error(function(msg) {
  8.     alert("Mensaje de error:" + msg); // error en la petición
  9. });

Código PHP:
Ver original
  1.  
  2. $_SESSION['user-agent'] = array("ua"=> $_POST['ua'], "version"=> $_POST['version'], "platform"=> $_POST['platform']);
  3.  
  4. var_dump($_SESSION['user-agent']);

Fácil, rápido y para toda la familia.
Suerte.

Saludos!
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #3 (permalink)  
Antiguo 09/09/2014, 08:01
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Actualizar scritp

Gracias CHuLoSoY, la verdad nose trabajar con ajax. Osea, que hace la linea 3, url: "ajax/guardar.php"?

Lo hago en php porque guardo algunos datos. Mas que nada el tipo de sistema, si es android, ios o firefox! Pero no me salen los sistemas moviles.

este es el listado que me tira:

BROWSER
Apple Safari 1
Google Chrome 3
Internet Explorer 1
Mozilla Firefox 5
n/i 6

Estoy tratando de implementar las sessiones que me pasaste y no tengo ningun resultado!
Nose como usarlas, estoy mareado!
__________________
Zreep
  #4 (permalink)  
Antiguo 09/09/2014, 09:02
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Actualizar scritp

Cambie un poco el script y quiero ver si funciona...

Si alguien tiene android u otro os diganme porfavor. Gracias!

http://previant.net/vxplore.php
__________________
Zreep

Etiquetas: Ninguno
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 14:45.