detectar browser


/ Published in: PHP
Save to your folder(s)

lo modifique yo, me gustaria agregar linux tambien. Aca hay una clase pa esto http://www.phpclasses.org/browse/package/2827.html


Copy this code and paste it in your HTML
  1. <?php
  2. //basado en http://www.stylegala.com/articles/no_more_css_hacks.htm y modificado pa detectar mas navegadores y os.
  3.  
  4. //llama la funcion que detecta todo y se inicializan las variables
  5. $d = detect();
  6. $b = $d['browser'];
  7. $v = $d['version'];
  8. $o = $d['os'];
  9. function detect()
  10. {
  11. //nota: firefox debe ir luego de mozilla pues el user agent tiene ambos
  12. //y flock debe ir luego de mozilla y firefox por la misma razon
  13. //chrome también debe ir despues de mozilla y safari porque los contiene a ambos
  14. //funciona porque siempre queda el valor de la última cadena encontrada
  15. $browser = array ("IE","OPERA","MOZILLA","NETSCAPE","FIREFOX","SAFARI", "FLOCK", "CHROME");
  16. $os = array ("WINDOWS","MAC","IPHONE");
  17. $info['browser'] = "OTHER";
  18. $info['os'] = "OTHER";
  19. $user_agent = $_SERVER['HTTP_USER_AGENT'];
  20. //Por cada valor del array de navegadores
  21. foreach ($browser as $parent)
  22. {
  23. //con strtoupper devuelve la cadena en mayúsculas y con strpos devuelve la posicion de la cadena
  24. //Si no se encuentra la cadena, devuelve FALSE
  25. $s = strpos(strtoupper($user_agent), $parent);
  26. //el user agent siempre suelta: Navegador/NumVersion o Navegador NumVersion pa explorer
  27. //con esto se tiene la posicion para la version que es justo despues del navegador (s + tamaño nombre navegador)
  28. $f = $s + strlen($parent);
  29. //devuelve la cadena que empieza en el caracter f y termina en f+5
  30. $version = substr($_SERVER['HTTP_USER_AGENT'], $f, 5);
  31. //reemplaza el numero, punto o / en la cadena version y lo reemplaza por vacio
  32. $version = preg_replace('/[^0-9,.]/','',$version);
  33. if ($s)
  34. {
  35. //como se encontro el navegador, se asignan los valores
  36. $info['browser'] = $parent;
  37. $info['version'] = $version;
  38. }
  39. }
  40. foreach ($os as $val)
  41. {
  42. //eregi encuentra subcadenas sin diferenciar mayusculas de minusculas
  43. if (eregi($val,strtoupper($_SERVER['HTTP_USER_AGENT']))) $info['os'] = $val;
  44. }
  45. return $info;
  46. }
  47. ?>

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.