Detectar dispositivos móviles con PHP
Ayer en el blog de Adsense publicaron un recurso para alternar las banner adsense en diseños responsivos, esos que se adaptan según el dispositivo desde el que se accede, el recurso es bueno y sirve pero en ciertos casos es escaso y por ello les dejo estos códigos PHP para detectar visitantes desde dispositivos móviles y hacer una u otra cosa según nos convenga.
Desde hace unas semanas Google Adsense viene entregando en mi cuenta recomendaciones para mudar varios banner de la medida 336×250 a 300×250, lo cual indica que hay muchos clientes para ese formato pero por otro parte es un tamaño ideal para el mercado móvil junto con el banner corto de 320×50. Para poder usar unos u otros según convenga desde el blog de Adsense ofrecen este código (en imagen, gracias por la gauchada) que sirve para alternar banner en diseños responsivos, la idea es mostrar según la resolución de pantalla del visitante un banner más grande y si se achica la pantalla uno de menores proporciones:
Pero como les decía puede que por su theme actual u otras limitaciones ese código no les resulte útil y lo que quieran sea detectar si ingresan desde un dispositivo movil para realizar diferentes tareas, entonces les recomiendo este abultado pero a su vez sencillo código:
Creamos un archivo mobile.php que determinara si el visitante usa alguno de esos navegador, lo cual indicara que es un visitante movil.
< ?php
$is_mobile=eregi('ipod|iphone|ipad|android|opera mini|blackberry|palm os|windows ce|windows mobile|palm|hiptop|avantgo|plucker|xiino|blazer|elaine|iris|3g_t|
windows ce|opera mobi|windows ce; smartphone;|windows ce; iemobile|mini 9.5|vx1000|lge |m800|e860|u940|ux840|compal|wireless| mobi|ahong|lg380|lgku|lgu900|lg210|lg47|lg920|lg840|lg370|sam-r|mg50|s55|g83|t66|vx400|mk99|d615|d763|el370|sl900|mp500|samu3|
samu4|vx10|xda_|samu5|samu6|samu7|samu9|a615|b832|m881|s920|n210|
s700|c810|_h797|mobx|sk16d|848b|mowser|s580|r800|471x|v120|rim8|
c500foma:|160x|x160|480x|x640|t503|w839|i250|sprint|w398samr810|
m5252|c7100|mt126|x225|s5330|s820|htil-g1|fly v71|s302|-x113|novarra|
k610i|-three|8325rc|8352rc|sanyo|vx54|c888|nx250|n120|mtk|
c5588|s710|t880|c5005|i;458x|p404i|s210|c5100|teleca|s940|c500|s590
|foma|samsu|vx8|vx9|a1000|_mms|myx|a700|gu1100|bc831|e300|ems100|
me701|me702m-three|sd588|s800|8325rc|ac831|mw200|brew|d88|htc\/|
htc_touch|355x|m50|km100|d736|p-9521|telco|sl74|ktouch|m4u\/|me702|
8325rc|kddi|phone|lg|sonyericsson|samsung|240x|x320|vx10|nokia|sony
cmd|motorola|up.browser|up.link|mmp|symbian|smartphone|midp|wap|
vodafone|o2|pocket|kindle|mobile|psp|treo', $_SERVER['HTTP_USER_AGENT'] );
?>
Luego lo usamos donde queremos:
< ?php
include "mobile.php";
if($is_mobile)
{
echo "esto es un movil";
}
else
{
echo "esto no es un movil";
}
?>
Y si necesitan más esta la librería php-mobile-detect que recomendaron en yukei, la cual es mucho más avanzada que lo anterior ya que detecta mediante funciones que tipo de SO es (Android, iPhone, Blackberry, etc) y también diferencia entre móviles y tabletas. Una porción del código que podrían utilizar seria:
< ?php
include('Mobile_Detect.php');
$detect = new Mobile_Detect();
if ( $detect->isAndroidtablet() || $detect->isIpad() || $detect->isBlackberrytablet() ) {
// mostar versión para tablets
} elseif( $detect->isAndroid() ) {
// versión Android
} elseif ( $detect->isIphone() ) {
// versión iPhone
} elseif ( $detect->isMobile() ) {
// versión para otros móviles
} else{
// versión "normal"
}
?>
Para el primer ejemplo. La función eregi está como deprecated a partir de PHP 5.3.0. http://php.net/manual/en/function.eregi.php NO UTILIZAR.
Pingback: Detectar dispositivos móviles con PHP | Creatuweb