php - script - La forma más simple de detectar un dispositivo móvil
php detectar tipo de dispositivo (12)
Aquí hay una fuente:
Código:
<?php
$useragent=$_SERVER[''HTTP_USER_AGENT''];
if(preg_match(''/(android|bb/d+|meego).+mobile|avantgo|bada//|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)//|plucker|pocket|psp|series(4|6)0|symbian|treo|up/.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i'',$useragent)||preg_match(''/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s/-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|/-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw/-(n|u)|c55//|capi|ccwa|cdm/-|cell|chtm|cldc|cmd/-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc/-s|devi|dica|dmob|do(c|p)o|ds(12|/-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(/-|_)|g1 u|g560|gene|gf/-5|g/-mo|go(/.w|od)|gr(ad|un)|haie|hcit|hd/-(m|p|t)|hei/-|hi(pt|ta)|hp( i|ip)|hs/-c|ht(c(/-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i/-(20|go|ma)|i230|iac( |/-|//)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |//)|klon|kpt |kwc/-|kyo(c|k)|le(no|xi)|lg( g|//(k|l|u)|50|54|/-[a-w])|libw|lynx|m1/-w|m3ga|m50//|ma(te|ui|xo)|mc(01|21|ca)|m/-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(/-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)/-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|/-([1-8]|c))|phil|pire|pl(ay|uc)|pn/-2|po(ck|rt|se)|prox|psio|pt/-g|qa/-a|qc(07|12|21|32|60|/-[2-7]|i/-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55//|sa(ge|ma|mm|ms|ny|va)|sc(01|h/-|oo|p/-)|sdk//|se(c(/-|0|1)|47|mc|nd|ri)|sgh/-|shar|sie(/-|m)|sk/-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h/-|v/-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl/-|tdg/-|tel(i|m)|tim/-|t/-mo|to(pl|sh)|ts(70|m/-|m3|m5)|tx/-9|up(/.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|/-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(/-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas/-|your|zeto|zte/-/i'',substr($useragent,0,4)))
header(''Location: http://detectmobilebrowser.com/mobile'');
?>
¿Cuál es la forma más simple de saber si un usuario está usando un dispositivo móvil para explorar mi sitio usando PHP
?
¡He encontrado muchas clases que puedes usar, pero esperaba una condición simple!
¿Hay alguna manera de que pueda hacer esto?
Descubrí que la detección móvil es realmente simple y puedes usar la función isMobile()
:)
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 mediante preg_match () palabras que se encuentran solo en cadenas de agente de usuario de dispositivos móviles después de cientos de pruebas. Tiene el 100% de precisión en todos los dispositivos móviles actuales y actualmente 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 function
if(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 it
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"]);
}
// If the user is on a mobile device, redirect them
if(isMobile()){
header("Location: http://m.yoursite.com/");
}
¡Avíseme si tiene alguna pregunta y buena suerte!
Me preguntaba, hasta ahora, por qué alguien no había publicado una alteración leve de la respuesta aceptada al uso de implode()
para tener una mejor legibilidad del código. Así que aquí va:
<?php
$uaFull = strtolower($_SERVER[''HTTP_USER_AGENT'']);
$uaStart = substr($uaFull, 0, 4);
$uaPhone = [ // use `= array(` if PHP<5.4
''(android|bb/d+|meego).+mobile'',
''avantgo'',
''bada//'',
''blackberry'',
''blazer'',
''compal'',
''elaine'',
''fennec'',
''hiptop'',
''iemobile'',
''ip(hone|od)'',
''iris'',
''kindle'',
''lge '',
''maemo'',
''midp'',
''mmp'',
''mobile.+firefox'',
''netfront'',
''opera m(ob|in)i'',
''palm( os)?'',
''phone'',
''p(ixi|re)//'',
''plucker'',
''pocket'',
''psp'',
''series(4|6)0'',
''symbian'',
''treo'',
''up/.(browser|link)'',
''vodafone'',
''wap'',
''windows ce'',
''xda'',
''xiino''
]; // use `);` if PHP<5.4
$uaMobile = [ // use `= array(` if PHP<5.4
''1207'',
''6310'',
''6590'',
''3gso'',
''4thp'',
''50[1-6]i'',
''770s'',
''802s'',
''a wa'',
''abac|ac(er|oo|s/-)'',
''ai(ko|rn)'',
''al(av|ca|co)'',
''amoi'',
''an(ex|ny|yw)'',
''aptu'',
''ar(ch|go)'',
''as(te|us)'',
''attw'',
''au(di|/-m|r |s )'',
''avan'',
''be(ck|ll|nq)'',
''bi(lb|rd)'',
''bl(ac|az)'',
''br(e|v)w'',
''bumb'',
''bw/-(n|u)'',
''c55//'',
''capi'',
''ccwa'',
''cdm/-'',
''cell'',
''chtm'',
''cldc'',
''cmd/-'',
''co(mp|nd)'',
''craw'',
''da(it|ll|ng)'',
''dbte'',
''dc/-s'',
''devi'',
''dica'',
''dmob'',
''do(c|p)o'',
''ds(12|/-d)'',
''el(49|ai)'',
''em(l2|ul)'',
''er(ic|k0)'',
''esl8'',
''ez([4-7]0|os|wa|ze)'',
''fetc'',
''fly(/-|_)'',
''g1 u'',
''g560'',
''gene'',
''gf/-5'',
''g/-mo'',
''go(/.w|od)'',
''gr(ad|un)'',
''haie'',
''hcit'',
''hd/-(m|p|t)'',
''hei/-'',
''hi(pt|ta)'',
''hp( i|ip)'',
''hs/-c'',
''ht(c(/-| |_|a|g|p|s|t)|tp)'',
''hu(aw|tc)'',
''i/-(20|go|ma)'',
''i230'',
''iac( |/-|//)'',
''ibro'',
''idea'',
''ig01'',
''ikom'',
''im1k'',
''inno'',
''ipaq'',
''iris'',
''ja(t|v)a'',
''jbro'',
''jemu'',
''jigs'',
''kddi'',
''keji'',
''kgt( |//)'',
''klon'',
''kpt '',
''kwc/-'',
''kyo(c|k)'',
''le(no|xi)'',
''lg( g|//(k|l|u)|50|54|/-[a-w])'',
''libw'',
''lynx'',
''m1/-w'',
''m3ga'',
''m50//'',
''ma(te|ui|xo)'',
''mc(01|21|ca)'',
''m/-cr'',
''me(rc|ri)'',
''mi(o8|oa|ts)'',
''mmef'',
''mo(01|02|bi|de|do|t(/-| |o|v)|zz)'',
''mt(50|p1|v )'',
''mwbp'',
''mywa'',
''n10[0-2]'',
''n20[2-3]'',
''n30(0|2)'',
''n50(0|2|5)'',
''n7(0(0|1)|10)'',
''ne((c|m)/-|on|tf|wf|wg|wt)'',
''nok(6|i)'',
''nzph'',
''o2im'',
''op(ti|wv)'',
''oran'',
''owg1'',
''p800'',
''pan(a|d|t)'',
''pdxg'',
''pg(13|/-([1-8]|c))'',
''phil'',
''pire'',
''pl(ay|uc)'',
''pn/-2'',
''po(ck|rt|se)'',
''prox'',
''psio'',
''pt/-g'',
''qa/-a'',
''qc(07|12|21|32|60|/-[2-7]|i/-)'',
''qtek'',
''r380'',
''r600'',
''raks'',
''rim9'',
''ro(ve|zo)'',
''s55//'',
''sa(ge|ma|mm|ms|ny|va)'',
''sc(01|h/-|oo|p/-)'',
''sdk//'',
''se(c(/-|0|1)|47|mc|nd|ri)'',
''sgh/-'',
''shar'',
''sie(/-|m)'',
''sk/-0'',
''sl(45|id)'',
''sm(al|ar|b3|it|t5)'',
''so(ft|ny)'',
''sp(01|h/-|v/-|v )'',
''sy(01|mb)'',
''t2(18|50)'',
''t6(00|10|18)'',
''ta(gt|lk)'',
''tcl/-'',
''tdg/-'',
''tel(i|m)'',
''tim/-'',
''t/-mo'',
''to(pl|sh)'',
''ts(70|m/-|m3|m5)'',
''tx/-9'',
''up(/.b|g1|si)'',
''utst'',
''v400'',
''v750'',
''veri'',
''vi(rg|te)'',
''vk(40|5[0-3]|/-v)'',
''vm40'',
''voda'',
''vulc'',
''vx(52|53|60|61|70|80|81|83|85|98)'',
''w3c(/-| )'',
''webc'',
''whit'',
''wi(g |nc|nw)'',
''wmlb'',
''wonu'',
''x700'',
''yas/-'',
''your'',
''zeto'',
''zte/-''
]; // use `);` if PHP<5.4
$isPhone = preg_match(''/'' . implode($uaPhone, ''|'') . ''/i'', $uaFull);
$isMobile = preg_match(''/'' . implode($uaMobile, ''|'') . ''/i'', $uaStart);
if($isPhone || $isMobile) {
// do something with that device
} else {
// process normally
}
No hay una manera confiable. Quizás pueda ver la cadena de agente de usuario , pero puede ser falsificada u omitida. Alternativamente, podría usar un servicio GeoIP para buscar la dirección IP del cliente, pero nuevamente, esto puede evitarse fácilmente.
Simplemente puedes seguir el enlace. es muy simple y muy fácil de usar. Estoy usando esto Funciona bien.
usar así
//include the file
require_once ''Mobile_Detect.php'';
$detect = new Mobile_Detect;
// Any mobile device (phones or tablets).
if ( $detect->isMobile() ) {
//do some code
}
// Any tablet device.
if( $detect->isTablet() ){
//do some code
}
Solo necesita incluir el archivo user_agent.php
que se puede encontrar desde la detección del dispositivo móvil en la página PHP y usar el siguiente código.
<?php
//include file
include_once ''user_agent.php'';
//create an instance of UserAgent class
$ua = new UserAgent();
//if site is accessed from mobile, then redirect to the mobile site.
if($ua->is_mobile()){
header("Location:http://m.codexworld.com");
exit;
}
?>
También puede usar una API de terceros para realizar la detección del dispositivo mediante una cadena de agente de usuario. Uno de esos servicios es useragentinfo.co . Simplemente regístrese y obtenga su token api y a continuación se muestra cómo obtener la información del dispositivo a través de PHP:
<?php
$useragent = $_SERVER[''HTTP_USER_AGENT''];
// get api token at https://useragentinfo.co/
$token = "<api-token>";
$url = "https://useragentinfo.co/api/v1/device/";
$data = array(''useragent'' => $useragent);
$headers = array();
$headers[] = "Content-type: application/json";
$headers[] = "Authorization: Token " . $token;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
$json_response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($status != 200 ) {
die("Error: call to URL $url failed with status $status, response $json_response, curl_error " . curl_error($curl) . ", curl_errno " . curl_errno($curl));
}
curl_close($curl);
echo $json_response;
?>
Y aquí está la respuesta de muestra si el visitante está usando un iPhone:
{
"device_type":"SmartPhone",
"browser_version":"5.1",
"os":"iOS",
"os_version":"5.1",
"device_brand":"Apple",
"bot":false,
"browser":"Mobile Safari",
"device_model":"iPhone"
}
La detección de dispositivos PHP desde 51Degrees.com hace exactamente lo que usted 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/.
- Descomprime el archivo en un directorio en tu servidor PHP.
- A continuación, agregue el siguiente código a su página PHP:
- Toda la información disponible del dispositivo estará contenida en la matriz $ _51d:
require_once ''path/to/core/51Degrees.php'';
require_once ''path/to/core/51Degrees_usage.php'';
if ($_51d[''IsMobile''])
{
//Start coding for a mobile device here.
}
El detector de dispositivo 51Degrees no usa expresiones regulares para las detecciones. Solo partes importantes de encabezados HTTP se usan para unir dispositivos. Lo que hace que esta solución sea la más rápida (5 000 000 detecciones por segundo en hardware mediocre) y más precisa (99,97% de precisión), ya que cientos de dispositivos nuevos se agregan semanalmente a la base de datos (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 es compatible con proyectos comerciales y de código abierto. Como una solución de bonificación 51Degrees también contiene un optimizador de imágenes PHP complementario que puede cambiar automáticamente el tamaño de las imágenes para dispositivos móviles.
De forma predeterminada, el detector de dispositivo PHP 51Degrees 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, entonces 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 .
Comparar archivos de datos .
<?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||$webOS||$Blackberry||$IEMobile||$OperaMini);
if ($DEVICE !=true) {?>
<!-- What you want for all non-mobile devices. Anything with all HTML codes-->
<?php }else{ ?>
<!-- What you want for all mobile devices. Anything with all HTML codes -->
<?php } ?>
function isMobile(){
if(defined(isMobile))return isMobile;
@define(isMobile,(!($HUA=@trim(@$_SERVER[''HTTP_USER_AGENT'']))?0:
(
preg_match(''/(android|bb/d+|meego).+mobile|silk|avantgo|bada//|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)//|plucker|pocket|psp|series(4|6)0|symbian|treo|up/.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i''
,$HUA)
||
preg_match(''/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s/-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|/-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw/-(n|u)|c55//|capi|ccwa|cdm/-|cell|chtm|cldc|cmd/-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc/-s|devi|dica|dmob|do(c|p)o|ds(12|/-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(/-|_)|g1 u|g560|gene|gf/-5|g/-mo|go(/.w|od)|gr(ad|un)|haie|hcit|hd/-(m|p|t)|hei/-|hi(pt|ta)|hp( i|ip)|hs/-c|ht(c(/-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i/-(20|go|ma)|i230|iac( |/-|//)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |//)|klon|kpt |kwc/-|kyo(c|k)|le(no|xi)|lg( g|//(k|l|u)|50|54|/-[a-w])|libw|lynx|m1/-w|m3ga|m50//|ma(te|ui|xo)|mc(01|21|ca)|m/-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(/-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)/-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|/-([1-8]|c))|phil|pire|pl(ay|uc)|pn/-2|po(ck|rt|se)|prox|psio|pt/-g|qa/-a|qc(07|12|21|32|60|/-[2-7]|i/-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55//|sa(ge|ma|mm|ms|ny|va)|sc(01|h/-|oo|p/-)|sdk//|se(c(/-|0|1)|47|mc|nd|ri)|sgh/-|shar|sie(/-|m)|sk/-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h/-|v/-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl/-|tdg/-|tel(i|m)|tim/-|t/-mo|to(pl|sh)|ts(70|m/-|m3|m5)|tx/-9|up(/.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|/-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(/-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas/-|your|zeto|zte/-/i''
,$HUA)
)
));
}
echo isMobile()?1:0;
// OR
echo isMobile?1:0;
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)){
return true;
}else{
return false;
};
}else{
return false;
};
}