web-dev-qa-db-ja.com

iOSデバイスからPHPページにアクセスしているかどうかを確認します

シンプルなPHP Webページがあり、iPhone/iPadからアクセスするかWebブラウザからアクセスするかによって異なるコンテンツを返したいのですが、どうすればよいですか?

60
Snilleblixten

$_SERVER['HTTP_USER_AGENT']のユーザーエージェントを使用し、簡単な検出のために this スクリプトを使用できます。

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

150
Haim Evgi
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;
}
15
Júlio Paulillo
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
MrBii
$browser = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
4
Pwnna
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;
}
2
Liuqing Hu
<?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
Mohini

Haim Evgiのコードに応じて、最後に!== 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
Gloson

Iphoneで動作します

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

51Degrees 'PHPソリューションはこれを行うことができます。無料のオープンソースAPIはここから入手できます https://github.com/51Degrees/Device-Detection 。あなたHardwareFamilyプロパティを使用して、iPad/iPod/iPhoneなどであるかどうかを判断できます。

AppleのUser-Agentの性質により、最初の結果は汎用デバイスを返しますが、特定のデバイスに関心がある場合は、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で働いています。

0
Zarwalski

GENERELでモバイルデバイスを検出する場合、CakeはRequestHandler-> isMobile()( http://book.cakephp.org/2.0/en/core-libraries/components/request- handling.html#RequestHandlerComponent :: isMobile

0
bohoej