Самый простой способ обнаружения мобильного устройства

Каков самый простой способ узнать, использует ли пользователь мобильное устройство для просмотра моего сайта с помощью PHP ?

Я столкнулся со многими классами, которые вы можете использовать, но я надеялся на простое условие!

Есть ли способ, которым я могу это сделать?

Solutions Collecting From Web of "Самый простой способ обнаружения мобильного устройства"

Вот источник:

  • Обнаружение мобильного браузера
  • Загрузить скрипт PHP

Код:

 <?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|\-[aw])|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'); ?> 

Я написал этот скрипт для обнаружения мобильного браузера в PHP.

Код обнаруживает пользователя на основе строки пользовательского агента посредством preg_match () слов, которые находятся в строках только пользовательских агентов мобильных устройств после нескольких сотен тестов. Он имеет 100% -ную точность на всех мобильных устройствах, и я в настоящее время обновляю его, чтобы поддерживать больше мобильных устройств по мере их выхода. Код называется isMobile и выглядит следующим образом:

 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"]); } 

Вы можете использовать его следующим образом:

 // Use the function if(isMobile()){ // Do something for only mobile users } else { // Do something for only desktop users } 

Чтобы перенаправить пользователя на ваш мобильный сайт, я бы сделал следующее:

 // 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/"); } 

Дайте мне знать, если у вас есть вопросы и удачи!

Я обнаружил, что мобильное обнаружение действительно простое, и вы можете просто использовать isMobile() 🙂

Нет надежного способа. Возможно, вы можете посмотреть на строку user-agent , но это может быть обмануто или опущено. Кроме того, вы можете использовать сервис GeoIP для поиска IP-адреса клиента, но опять же это можно легко обойти.

Мне было интересно, до сих пор, почему кто-то не опубликовал небольшое изменение принятого ответа на использование implode() , чтобы иметь лучшую читаемость кода. Итак, вот оно:

 <?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|\-[aw])', '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 } 
 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; }; }; 

Обнаружение устройства PHP с помощью 51Degrees.com делает именно то, что вы хотите – обнаруживает мобильные устройства и различные свойства, связанные с обнаруженными устройствами. Он прост в использовании и не требует обслуживания. Настройка выполняется в 4 простых шага:

  1. Загрузите Zip-файл из http://sourceforge.net/projects/fiftyone/.
  2. Разархивируйте файл в каталог на вашем сервере PHP.
  3. Затем добавьте следующий код на страницу PHP:
  4.  require_once 'path/to/core/51Degrees.php'; require_once 'path/to/core/51Degrees_usage.php'; 
  5. Вся информация о доступных устройствах будет содержаться в массиве $ _51d:
  6.  if ($_51d['IsMobile']) { //Start coding for a mobile device here. } 

51Degrees не использует регулярные выражения для детектирования. Для сопоставления устройств используются только важные части HTTP-заголовков. Это делает это решение самым быстрым (5 000 000 обнаружений в секунду на посредственном оборудовании) и наиболее точным (точность 99,97%), поскольку сотни новых устройств добавляются в базу данных еженедельно (поддерживаемые типы устройств включают в себя консоли, интеллектуальные телевизоры, электронные считыватели, таблетки и многое другое).

Программное обеспечение является открытым исходным кодом, распространяемым в рамках публичной лицензии Mozilla 2 и совместимым с коммерческими и с открытым исходным кодом. В качестве бонуса решение 51Degrees также содержит дополнительный оптимизатор изображений PHP, который может автоматически изменять размер изображений для мобильных устройств.

По умолчанию детектор устройств 51Degrees PHP использует файл данных Lite, который является бесплатным и содержит более 30000 устройств и 50 свойств для каждого устройства. Файл Lite обновляется раз в 3 месяца. Если вы хотите получить более высокий уровень детализации запросов на мобильные устройства, тогда доступны файлы данных Premium и Enterprise. Premium содержит более 70000 устройств и 100 свойств для каждого устройства с еженедельными обновлениями. Предприятие обновляется ежедневно и содержит более 150000 устройств с 150 свойствами для каждого.

Полный список свойств устройства .
Сравните файлы данных .

Вам нужно всего лишь включить файл user_agent.php который можно найти в user_agent.php мобильных устройств» на странице PHP и использовать следующий код.

 <?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; } ?> 

Просто вы можете перейти по ссылке. его очень простой и очень простой в использовании. Я использую это. Его работа прекрасна.

http://mobiledetect.net/

используйте это

 //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 } 

Вы также можете использовать стороннюю api для обнаружения устройств через строку пользовательского агента. Одной из таких услуг является useragentinfo.co . Просто зарегистрируйтесь и получите токен api, а ниже – как получить информацию о устройстве через 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; ?> 

И вот пример ответа, если посетитель использует 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" } 
 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|\-[aw])|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;