Проверьте, доступен ли PHP-сайт с устройства iOS - PullRequest
59 голосов
/ 12 июня 2011

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

Ответы [ 10 ]

147 голосов
/ 12 июня 2011

Использовать пользовательский агент от $_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

14 голосов
/ 13 марта 2014
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;
}
4 голосов
/ 25 июня 2014
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';
    }
}
4 голосов
/ 12 июня 2011
$browser = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
2 голосов
/ 08 августа 2016
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;
}
0 голосов
/ 12 декабря 2017

В ответ на код Хаима Эвги я добавил! == 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;
0 голосов
/ 12 апреля 2017
PHP-решение

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

Из-за природы пользовательских агентов 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;
}

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

Раскрытие информации: я работаю на 51 градусов.

0 голосов
/ 29 октября 2015
<?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;
}
?>
0 голосов
/ 07 мая 2014

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

0 голосов
/ 15 апреля 2013

Это работа для Iphone

<?php
  $browser = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
  if ($browser == true){
    $browser = 'iphone';
  }
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...