@naveed Solo un aviso, esto ya no parece funcionar. Probado en IOS 8.1 con el navegador móvil de Chrome. Sin embargo, Justin está trabajando para mí.
James
15
@ kavior.com Sí, se puede falsificar, pero deberíamos permitir que las personas simulen si lo desean ... porque esa sería su intención, por qué evitar que las personas hagan lo que específicamente quieren (es decir, cargar la versión de escritorio por alguna razón en particular )?
Nick Steele
44
Esta respuesta es ahora tan obsoleta. Hay muchos falsos positivos, Safari en OSX se detecta como móvil, Chrome en OSX se detecta como móvil.
DevZer0
3
@ DevZer0: Ok. Puede agregar la última solución al final de esta respuesta.
El código detecta a un usuario basado en la cadena de agente de usuario preg_match () ing palabras que se encuentran solo en cadenas de agente de usuario de dispositivos móviles después de cientos de pruebas. Tiene una precisión del 100% en todos los dispositivos móviles actuales y actualmente lo estoy actualizando para admitir más dispositivos móviles a medida que salen. El código se llama isMobile y es el siguiente:
function isMobile(){return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]);}
Puedes usarlo así:
// Use the functionif(isMobile()){// Do something for only mobile users}else{// Do something for only desktop users}
Para redirigir a un usuario a su sitio móvil, haría esto:
// Create the function, so you can use itfunction isMobile(){return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]);}// If the user is on a mobile device, redirect themif(isMobile()){
header("Location: http://m.yoursite.com/");}
¡Hazme saber si tienes alguna pregunta y buena suerte!
@RobertHarvey: estoy confundido. Todos están preguntando básicamente lo mismo, ¿qué se supone que debo hacer, aparte de responder la pregunta? ¿decirles que usen algo más cada vez? Soy nuevo aquí, así que no estoy seguro de si se supone que debo vincular a la primera respuesta.
Justin DoCanto
Esta palabra clave "tableta" me está creando un problema en algunos encabezados de IE8 (PC) que tienen "Tablet PC 2.0" en respuesta
Mladen Janjetovic
¿Por qué usar una función para almacenar la condición en lugar de una variable simple y hacer if($isMobile) {}?
D4V1D
10
Aquí está la versión actualizada: return preg_match("/(android|webos|avantgo|iphone|ipad|ipod|blackberry|iemobile|bolt|boost|cricket|docomo|fone|hiptop|mini|opera mini|kitkat|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]);Esta es una colección de pocos dispositivos nuevos.
//include the file
require_once 'Mobile_Detect.php';
$detect =newMobile_Detect;// Any mobile device (phones or tablets).if( $detect->isMobile()){//do some code}// Any tablet device.if( $detect->isTablet()){//do some code}
function isMobileDev(){if(isset($_SERVER['HTTP_USER_AGENT'])and!empty($_SERVER['HTTP_USER_AGENT'])){
$user_ag = $_SERVER['HTTP_USER_AGENT'];if(preg_match('/(Mobile|Android|Tablet|GoBrowser|[0-9]x[0-9]*|uZardWeb\/|Mini|Doris\/|Skyfire\/|iPhone|Fennec\/|Maemo|Iris\/|CLDC\-|Mobi\/)/uis',$user_ag)){returntrue;}else{returnfalse;};}else{returnfalse;};}
Me preguntaba, hasta ahora, por qué alguien no había publicado una ligera alteración de la respuesta aceptada para el uso implode()con el fin de tener una mejor legibilidad del código. Entonces aquí va:
No hay forma confiable. Tal vez pueda mirar la cadena de agente de usuario , pero esto puede ser falsificado u omitido. Alternativamente, puede usar un servicio GeoIP para buscar la dirección IP del cliente, pero de nuevo, esto se puede eludir fácilmente.
GeoIP realmente no ayudaría. Incluso si pudiera determinar que su IP pertenece a una red móvil, podrían estar conectando la conexión a una computadora de escritorio. Si no es una red móvil, realmente no hay nada, todos los dispositivos pueden conectarse a través de Wi-Fi. También tiene el problema de mantener una base de datos global de rangos de IP. Usar el agente de usuario, aunque no es perfecto, supongo que es mucho más confiable. No es que sea realmente un problema de seguridad servir el contenido incorrecto del navegador, entonces, ¿a quién le importa? Si alguien está engañando a la UA, probablemente ya sepa en qué se está metiendo.
<?php
//include file
include_once 'user_agent.php';//create an instance of UserAgent class
$ua =newUserAgent();//if site is accessed from mobile, then redirect to the mobile site.if($ua->is_mobile()){
header("Location:http://m.codexworld.com");exit;}?>
<?php
//-- Very simple way
$useragent = $_SERVER['HTTP_USER_AGENT'];
$iPod = stripos($useragent,"iPod");
$iPad = stripos($useragent,"iPad");
$iPhone = stripos($useragent,"iPhone");
$Android = stripos($useragent,"Android");
$iOS = stripos($useragent,"iOS");//-- You can add billion devices
$DEVICE =($iPod||$iPad||$iPhone||$Android||$iOS);if(!$DEVICE){?><!-- What you want for all non-mobile devices. Anything with all HTML, PHP, CSS, even full page codes--><?php }else{?><!-- What you want for all mobile devices. Anything with all HTML, PHP, CSS, even full page codes --><?php }?>
La detección de dispositivos PHP de 51Degrees.com hace exactamente lo que desea: detecta dispositivos móviles y varias propiedades asociadas con los dispositivos detectados. Es simple de usar y no requiere mantenimiento. La configuración se realiza en 4 sencillos pasos:
Descargue el archivo Zip de http://sourceforge.net/projects/fiftyone/.
Descomprima el archivo en un directorio en su servidor PHP.
Luego agregue el siguiente código a su página PHP:
Toda la información disponible del dispositivo estará contenida en la matriz $ _51d:
if($_51d['IsMobile']){//Start coding for a mobile device here.}
El detector de dispositivo de 51 grados no utiliza expresiones regulares para las detecciones. Solo se usan partes importantes de los encabezados HTTP para hacer coincidir los dispositivos. Lo que hace que esta solución sea la más rápida (5 000 000 de detecciones por segundo en hardware mediocre) y la más precisa (99,97% de precisión) ya que se agregan cientos de nuevos dispositivos a la base de datos semanalmente (los tipos de dispositivos compatibles incluyen consolas, televisores inteligentes, lectores electrónicos, tabletas y más).
El software es de código abierto distribuido bajo Mozilla Public License 2 y compatible con proyectos comerciales y de código abierto. Como una solución adicional de 51Degrees también contiene un optimizador de imagen PHP complementario que puede cambiar automáticamente el tamaño de las imágenes para dispositivos móviles.
Por defecto, el detector de dispositivos PHP de 51 grados utiliza un archivo de datos Lite que es gratuito y contiene más de 30000 dispositivos y 50 propiedades para cada dispositivo. El archivo Lite se actualiza una vez cada 3 meses. Si desea tener un mayor nivel de detalles sobre la solicitud de dispositivos móviles, los archivos de datos Premium y Enterprise están disponibles. Premium contiene más de 70000 dispositivos y 100 propiedades para cada dispositivo con actualizaciones semanales. Enterprise se actualiza diariamente y contiene más de 150000 dispositivos con 150 propiedades para cada uno.
ese software es molesto. No hay soporte para IIS, no hay biblioteca solo php.
Tschallacka
2
También puede usar una API de terceros para detectar dispositivos a través de una cadena de agente de usuario. Uno de esos servicios es www.useragentinfo.co . Simplemente regístrese y obtenga su token de API y a continuación se muestra cómo obtener la información del dispositivo a través de PHP:
Esto funciona ! Y este script simple parece uno de los mejores que encontré: (hasta ahora) ¡es el único script que encontré que puede detectar mi tableta ASUS ZenPad! Pero NOTA: cambiaron el $ url a https://useragentinfo.co/device , vea su página https://useragentinfo.co : le da el código bash para ejecutar curl pero de hecho puede reemplazar esto por sus líneas PHP. Sin embargo, debe omitir la línea "Autorización: Token ..." porque parece que ya no es necesaria (y no veo forma de obtener esa clave API).
Roelof Berkepeis
No obteniendo respuesta. solo mostrando {} Creo que se necesita un token API, ¿podría guiarme cómo generar el token?
Mohd Bashir
$ data = array ('user_agent' => $ useragent); Debería ser como: $ data = array ('useragent' => $ useragent);
En caso de que le interese el tamaño de la pantalla, puede almacenar el ancho y la altura de la pantalla como valores de cookies si aún no existen y luego realizar la redirección de la página.
Ahora tiene cookies en el lado del cliente y del servidor y puede usarlas para determinar teléfonos móviles, tabletas y otros dispositivos
Aquí un ejemplo rápido de cómo puedes hacerlo con JavaScript. ¡Advertencia! [este código contiene pseudocódigo].
Respuestas:
Aquí hay una fuente:
Código:
fuente
Escribí este script para detectar un navegador móvil en PHP.
El código detecta a un usuario basado en la cadena de agente de usuario preg_match () ing palabras que se encuentran solo en cadenas de agente de usuario de dispositivos móviles después de cientos de pruebas. Tiene una precisión del 100% en todos los dispositivos móviles actuales y actualmente lo estoy actualizando para admitir más dispositivos móviles a medida que salen. El código se llama isMobile y es el siguiente:
Puedes usarlo así:
Para redirigir a un usuario a su sitio móvil, haría esto:
¡Hazme saber si tienes alguna pregunta y buena suerte!
fuente
if($isMobile) {}
?return preg_match("/(android|webos|avantgo|iphone|ipad|ipod|blackberry|iemobile|bolt|boost|cricket|docomo|fone|hiptop|mini|opera mini|kitkat|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]);
Esta es una colección de pocos dispositivos nuevos./\b(?:a(?:ndroid|vantgo)|b(?:lackberry|olt|o?ost)|cricket|docomo|hiptop|i(?:emobile|p[ao]d)|kitkat|m(?:ini|obi)|palm|(?:i|smart|windows )phone|symbian|up\.(?:browser|link)|tablet(?: browser| pc)|(?:hp-|rim |sony )tablet|w(?:ebos|indows ce|os))/i
Descubrí que la detección móvil es muy simple y puedes usar la
isMobile()
función :)fuente
Simplemente puedes seguir el enlace. Es muy simple y muy fácil de usar. Estoy usando esto Está funcionando bien.
http://mobiledetect.net/
usar así
fuente
fuente
Me preguntaba, hasta ahora, por qué alguien no había publicado una ligera alteración de la respuesta aceptada para el uso
implode()
con el fin de tener una mejor legibilidad del código. Entonces aquí va:fuente
No hay forma confiable. Tal vez pueda mirar la cadena de agente de usuario , pero esto puede ser falsificado u omitido. Alternativamente, puede usar un servicio GeoIP para buscar la dirección IP del cliente, pero de nuevo, esto se puede eludir fácilmente.
fuente
Solo necesita incluir el
user_agent.php
archivo que se puede encontrar en la detección de dispositivos móviles en la página PHP y usar el siguiente código.fuente
fuente
La detección de dispositivos PHP de 51Degrees.com hace exactamente lo que desea: detecta dispositivos móviles y varias propiedades asociadas con los dispositivos detectados. Es simple de usar y no requiere mantenimiento. La configuración se realiza en 4 sencillos pasos:
El detector de dispositivo de 51 grados no utiliza expresiones regulares para las detecciones. Solo se usan partes importantes de los encabezados HTTP para hacer coincidir los dispositivos. Lo que hace que esta solución sea la más rápida (5 000 000 de detecciones por segundo en hardware mediocre) y la más precisa (99,97% de precisión) ya que se agregan cientos de nuevos dispositivos a la base de datos semanalmente (los tipos de dispositivos compatibles incluyen consolas, televisores inteligentes, lectores electrónicos, tabletas y más).
El software es de código abierto distribuido bajo Mozilla Public License 2 y compatible con proyectos comerciales y de código abierto. Como una solución adicional de 51Degrees también contiene un optimizador de imagen PHP complementario que puede cambiar automáticamente el tamaño de las imágenes para dispositivos móviles.
Por defecto, el detector de dispositivos PHP de 51 grados utiliza un archivo de datos Lite que es gratuito y contiene más de 30000 dispositivos y 50 propiedades para cada dispositivo. El archivo Lite se actualiza una vez cada 3 meses. Si desea tener un mayor nivel de detalles sobre la solicitud de dispositivos móviles, los archivos de datos Premium y Enterprise están disponibles. Premium contiene más de 70000 dispositivos y 100 propiedades para cada dispositivo con actualizaciones semanales. Enterprise se actualiza diariamente y contiene más de 150000 dispositivos con 150 propiedades para cada uno.
Lista completa de propiedades del dispositivo .
Compara archivos de datos .
fuente
También puede usar una API de terceros para detectar dispositivos a través de una cadena de agente de usuario. Uno de esos servicios es www.useragentinfo.co . Simplemente regístrese y obtenga su token de API y a continuación se muestra cómo obtener la información del dispositivo a través de PHP:
Y aquí está la respuesta de muestra si el visitante está usando un iPhone:
fuente
fuente
En caso de que le interese el tamaño de la pantalla, puede almacenar el ancho y la altura de la pantalla como valores de cookies si aún no existen y luego realizar la redirección de la página.
Ahora tiene cookies en el lado del cliente y del servidor y puede usarlas para determinar teléfonos móviles, tabletas y otros dispositivos
Aquí un ejemplo rápido de cómo puedes hacerlo con JavaScript. ¡Advertencia! [este código contiene pseudocódigo].
fuente
fuente