Foros del Web » Programando para Internet » PHP »

detectar dispositivo movil

Estas en el tema de detectar dispositivo movil en el foro de PHP en Foros del Web. Desde php se puede detectar si se entra desde un dispositivo movil para establecer archivos y css adaptadas para esas pantallas?...
  #1 (permalink)  
Antiguo 19/03/2015, 06:57
 
Fecha de Ingreso: noviembre-2005
Mensajes: 144
Antigüedad: 18 años, 5 meses
Puntos: 2
detectar dispositivo movil

Desde php se puede detectar si se entra desde un dispositivo movil para establecer archivos y css adaptadas para esas pantallas?
  #2 (permalink)  
Antiguo 19/03/2015, 07:01
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
Respuesta: detectar dispositivo movil

Creo que esto te podria servir para detectar el dispositivo :

Código PHP:
Ver original
  1. <?php
  2.  
  3. $tablet_browser = 0;
  4. $mobile_browser = 0;
  5. $body_class = 'desktop';
  6.  
  7. if (preg_match('/(tablet|ipad|playbook)|(android(?!.*(mobi|opera mini)))/i', strtolower($_SERVER['HTTP_USER_AGENT']))) {
  8.     $tablet_browser++;
  9.     $body_class = "tablet";
  10. }
  11.  
  12. if (preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|android|iemobile)/i', strtolower($_SERVER['HTTP_USER_AGENT']))) {
  13.     $mobile_browser++;
  14.     $body_class = "mobile";
  15. }
  16.  
  17. if ((strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml') > 0) or ((isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE'])))) {
  18.     $mobile_browser++;
  19.     $body_class = "mobile";
  20. }
  21.  
  22. $mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'], 0, 4));
  23. $mobile_agents = array(
  24.     'w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac',
  25.     'blaz','brew','cell','cldc','cmd-','dang','doco','eric','hipt','inno',
  26.     'ipaq','java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-',
  27.     'maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-',
  28.     'newt','noki','palm','pana','pant','phil','play','port','prox',
  29.     'qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar',
  30.     'sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-',
  31.     'tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp',
  32.     'wapr','webc','winw','winw','xda ','xda-');
  33.  
  34. if (in_array($mobile_ua,$mobile_agents)) {
  35.     $mobile_browser++;
  36. }
  37.  
  38. if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'opera mini') > 0) {
  39.     $mobile_browser++;
  40.     //Check for tablets on opera mini alternative headers
  41.     $stock_ua = strtolower(isset($_SERVER['HTTP_X_OPERAMINI_PHONE_UA'])?$_SERVER['HTTP_X_OPERAMINI_PHONE_UA']:(isset($_SERVER['HTTP_DEVICE_STOCK_UA'])?$_SERVER['HTTP_DEVICE_STOCK_UA']:''));
  42.     if (preg_match('/(tablet|ipad|playbook)|(android(?!.*mobile))/i', $stock_ua)) {
  43.       $tablet_browser++;
  44.     }
  45. }
  46. if ($tablet_browser > 0) {
  47. // Si es tablet has lo que necesites
  48.    print 'es tablet';
  49. }
  50. else if ($mobile_browser > 0) {
  51. // Si es dispositivo mobil has lo que necesites
  52.    print 'es un mobil';
  53. }
  54. else {
  55. // Si es ordenador de escritorio has lo que necesites
  56.    print 'es un ordenador de escritorio';
  57. }
  58. ?>


Saludos
  #3 (permalink)  
Antiguo 19/03/2015, 07:04
 
Fecha de Ingreso: noviembre-2005
Mensajes: 144
Antigüedad: 18 años, 5 meses
Puntos: 2
Respuesta: detectar dispositivo movil

Muchas gracias! tengo que adaptar todo mi sitio para moviles, no quiero crear un subdominio movil.misito.com prefiero mantener la url.
  #4 (permalink)  
Antiguo 19/03/2015, 15:51
Avatar de lauser
Moderator Unix/Linux
 
Fecha de Ingreso: julio-2013
Ubicación: Odessa (Ukrania)
Mensajes: 3.278
Antigüedad: 10 años, 9 meses
Puntos: 401
Respuesta: detectar dispositivo movil

Descarga este github y lo subes al server.

Incluye la sentencia en la web:
Código PHP:
Ver original
  1. require_once ('Mobile_Detect.php');

Crea la instancia:
Código PHP:
Ver original
  1. $detect = new Mobile_Detect();

Las condicionales que necesites:
Código PHP:
Ver original
  1. <?php
  2. if ($detect->isMobile()) {
  3. // Detecta si es un móvil
  4. }
  5. if ($detect->isTablet()) {
  6. // Si es un tablet
  7. }
  8. if ($detect->isAndroidOS()) {
  9. // Si es Android
  10. }
  11. if ($detect->isiOS()){
  12.  //Si es iOS
  13. }
  14. ?>

Y ya tienes la detección realizada. Te pongo un ejemplo que detecta si el mobile o no, para cargar un carrusel, asi te aclararas mejor a la hora de implantarlo.
Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. ###aquí código y librerías del carrusel
  3. </head>
  4. ###aquí imágenes del carrusel
  5. </body>
  6. </html>

Lo que hay entre las líneas 5 y 7, como lo que hay en la línea 10, solo cargara si no es un móvil.
Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <?php require_once ('Mobile_Detect.php');
  3. $detect = new Mobile_Detect(); ?>
  4. <?php if ($detect->isMobile()==false) { ?>
  5. ###aquí código y librerías del carrusel
  6. <?php } ?>
  7. </head>
  8. <?php if ($detect->isMobile()==false) { ?>
  9. ###aquí imágenes del carrusel
  10. <?php } ?>
  11. </body>
  12. </html>
__________________
Los usuarios que te responden, lo hacen altruistamente y sin ánimo de lucro con el único fin de ayudarte. Se paciente y agradecido.
-SOLOLINUX-

Etiquetas: dispositivo, movil
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 22:53.