Intereting Posts
Рабочий пример реализации «Аутентификация на основе токенов» с использованием «JSON Web Token (т.е. JWT)» в PHP и MySQL? срок действия документа после нажатия кнопки возврата TinyMVC Model / Plugin как реализовать? PHP: Как сгенерировать дерево <ul> <li> в массиве xml2assoc? Упростить PHP DOM XML-анализ – как? Является array_key_exists ('submit_input_name', $ _ POST) лучше, чем ($ _POST == "submit_input_name") что является лучшим разделителем для разделения нескольких электронных писем php mail на MAMP Загружать файлы xls или xlsx с помощью codeigniter, mime-type error Как решить ошибку: SOAP-ERROR: Кодировка: объект не имеет свойства «createLead»? Как выполнить заключительные шаги в проекте разбивки на страницы? Использование виртуальных полей в cakePHP 2.x правильный способ загрузки сопоставления массивов хешей mongodb, если не использовать аннотации со странными аксессуарами Неустранимая ошибка: исключить исключение «PDOException» с сообщением «SQLSTATE : PHP – Если переменная не пуста, echo html-код

Проверьте, доступна ли PHP-страница с устройства iOS

У меня простая веб-страница PHP, и я хотел бы вернуть другой контент в зависимости от того, доступен ли он из iPhone / iPad или из веб-браузера. Как я могу это сделать?

Используйте агент пользователя из $_SERVER['HTTP_USER_AGENT'] , и для простого обнаружения вы можете использовать этот скрипт:

 <?php //Detect special conditions devices $iPod = stripos($_SERVER['HTTP_USER_AGENT'],"iPod"); $iPhone = stripos($_SERVER['HTTP_USER_AGENT'],"iPhone"); $iPad = stripos($_SERVER['HTTP_USER_AGENT'],"iPad"); $Android = stripos($_SERVER['HTTP_USER_AGENT'],"Android"); $webOS = stripos($_SERVER['HTTP_USER_AGENT'],"webOS"); //do something with this information if( $iPod || $iPhone ){ //browser reported as an iPhone/iPod touch -- do something here }else if($iPad){ //browser reported as an iPad -- do something here }else if($Android){ //browser reported as an Android device -- do something here }else if($webOS){ //browser reported as a webOS device -- do something here } ?> 

Если вы хотите узнать более подробную информацию о пользовательском устройстве, я рекомендовал использовать одно из следующих решений: http://51degrees.mobi или http://deviceatlas.com

 preg_match("/iPhone|Android|iPad|iPod|webOS/", $_SERVER['HTTP_USER_AGENT'], $matches); $os = current($matches); switch($os){ case 'iPhone': /*do something...*/ break; case 'Android': /*do something...*/ break; case 'iPad': /*do something...*/ break; case 'iPod': /*do something...*/ break; case 'webOS': /*do something...*/ break; } 
 $browser = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone"); 
 function user_agent(){ $iPod = strpos($_SERVER['HTTP_USER_AGENT'],"iPod"); $iPhone = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone"); $iPad = strpos($_SERVER['HTTP_USER_AGENT'],"iPad"); $android = strpos($_SERVER['HTTP_USER_AGENT'],"Android"); file_put_contents('./public/upload/install_log/agent',$_SERVER['HTTP_USER_AGENT']); if($iPad||$iPhone||$iPod){ return 'ios'; }else if($android){ return 'android'; }else{ return 'pc'; } } 

Это работа для Iphone, я использую ее в своем портфеле

 <?php $browser = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone"); if ($browser == true){ $browser = 'iphone'; } ?> 

Если вы просто хотите обнаружить мобильные устройства в общем виде, Cake имеет встроенную поддержку с помощью RequestHandler-> isMobile () ( http://book.cakephp.org/2.0/en/core-libraries/components/request-handling.html# RequestHandlerComponent :: isMobile )

 <?php $iPhone = false; $AndroidPhone = false; $deviceType = 0; $ua = strtolower($_SERVER['HTTP_USER_AGENT']); print "<br>".$ua; if(strpos($ua,"iphone") !== false ){ $iPhone = true; } if(strpos($ua,"android") !== false){ if(strpos($_SERVER['HTTP_USER_AGENT'],"mobile")){ $AndroidPhone = true; } } if(stripos($_SERVER['HTTP_USER_AGENT'],"iPad")){ $iPad = true; $Tablet = true; $iOS = true; } if($AndroidPhone==true || $iPhone==true) { $deviceType = 1; } ?> 
 function isIosDevice(){ $userAgent = strtolower($_SERVER['HTTP_USER_AGENT']); $iosDevice = array('iphone', 'ipod', 'ipad'); $isIos = false; foreach ($iosDevice as $val) { if(stripos($userAgent, $val) !== false){ $isIos = true; break; } } return $isIos; } 

Решение PHP 51Degrees может сделать это. вы можете получить бесплатный API с открытым исходным кодом здесь https://github.com/51Degrees/Device-Detection . Вы можете использовать свойство HardwareFamily, чтобы определить, является ли это iPad / iPod / iPhone и т. Д.

Из-за характера User-Agents от Apple исходный результат будет возвращать универсальное устройство, однако, если вас интересует конкретное устройство, вы можете использовать переопределение JavaScript-клиента для определения конкретной модели.

Для этого вы можете реализовать что-то похожее на следующую логику, как только вы определили, что это устройство Apple, в данном случае для iPhone.

 // iPhone model checks. function getiPhoneModel() { // iPhone 6 Plus if ((window.screen.height / window.screen.width == 736 / 414) && (window.devicePixelRatio == 3)) { return "iPhone 6 Plus"; } // iPhone 6 else if ((window.screen.height / window.screen.width == 667 / 375) && (window.devicePixelRatio == 2)) { return "iPhone 6"; } // iPhone 5/5C/5S or 6 in zoom mode else if ((window.screen.height / window.screen.width == 1.775) && (window.devicePixelRatio == 2)) { return "iPhone 5, 5C, 5S or 6 (display zoom)"; } // iPhone 4/4S else if ((window.screen.height / window.screen.width == 1.5) && (window.devicePixelRatio == 2)) { return "iPhone 4 or 4S"; } // iPhone 1/3G/3GS else if ((window.screen.height / window.screen.width == 1.5) && (window.devicePixelRatio == 1)) { return "iPhone 1, 3G or 3GS"; } else { return "Not an iPhone"; }; } 

Или для iPad

 function getiPadVersion() { var pixelRatio = getPixelRatio(); var return_string = "Not an iPad"; if (pixelRatio == 1 ) { return_string = "iPad 1, iPad 2, iPad Mini 1"; } if (pixelRatio == 2) { return_string = "iPad 3, iPad 4, iPad Air 1, iPad Air 2, iPad Mini 2, iPad Mini 3"; } return return_string; } 

Для получения дополнительной информации о исследованиях 51Degrees сделали в устройствах Apple, вы можете прочитать их сообщение в блоге здесь https://51degrees.com/blog/device-detection-for-apple-iphone-and-ipad .

Раскрытие: я работаю на 51Degrees.

В ответ на код Хаима Евги я добавил! == false до конца, чтобы он работал для меня

 $iPod = stripos($_SERVER['HTTP_USER_AGENT'],"iPod") !== false; $iPhone = stripos($_SERVER['HTTP_USER_AGENT'],"iPhone") !== false; $iPad = stripos($_SERVER['HTTP_USER_AGENT'],"iPad") !== false; $Android = stripos($_SERVER['HTTP_USER_AGENT'],"Android") !== false;