web-dev-qa-db-fra.com

Vérifier si la page PHP est accessible depuis un appareil iOS

J'ai une simple page Web PHP et je souhaite renvoyer un contenu différent selon que vous y accédez depuis un iPhone/iPad ou un navigateur Web. Comment puis je faire ça?

58
Snilleblixten

Utilisez l'agent utilisateur à partir de $_SERVER['HTTP_USER_AGENT'], Pour une détection simple, vous pouvez utiliser le script 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
}

?> 

Si vous souhaitez connaître plus de détails sur la machine utilisateur, il est recommandé d'utiliser l'une des solutions suivantes: http://51degrees.mobi ou http://deviceatlas.com

147
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;
}
14
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;
}
1
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

En réponse au code de Haim Evgi, j'ai ajouté! == false jusqu'à la fin pour que cela fonctionne pour moi

$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

C'est du travail pour Iphone

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

La solution PHP de 51Degrees est capable de le faire. vous pouvez obtenir gratuitement l'API Open Source ici https://github.com/51Degrees/Device-Detection . Vous pouvez utiliser la propriété HardwareFamily pour déterminer s’il s’agit d’un iPad/iPod/iPhone, etc. 

En raison de la nature des agents utilisateurs Apple, le résultat initial renvoie un périphérique générique. Toutefois, si le périphérique en question vous intéresse, vous pouvez utiliser un remplacement JavaScript côté client pour déterminer un modèle spécifique.

Pour ce faire, vous pouvez implémenter quelque chose de similaire à la logique suivante une fois que vous avez déterminé qu'il s'agit d'un appareil Apple, dans le cas présent d'un 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";
};
}

Ou pour un 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;
}

Pour plus d’informations sur la recherche 51Les légendes des appareils Apple sont accessibles sur leur blog ici https://51degrees.com/blog/device-detection-for-Apple-iphone-and-ipad .

Divulgation: Je travaille pour 51Degrees.

0
Zarwalski

Si vous voulez juste détecter les appareils mobiles en général, Cake a un support intégré en utilisant RequestHandler-> isMobile () ( http://book.cakephp.org/2.0/en/core-libraries/components/request-handling. html # RequestHandlerComponent :: isMobile )

0
bohoej