Vérifiez si PHP-page est accessible à partir d'un appareil iOS

J'ai une simple page Web PHP, et je voudrais renvoyer un contenu différent selon qu'il est accessible à partir d'un iPhone/iPad ou d'un navigateur web. Comment puis-je le faire?

56
demandé sur Snilleblixten 2011-06-12 17:09:10

10 réponses

Utiliser l'agent utilisateur de $_SERVER['HTTP_USER_AGENT'], et pour une détection simple, vous pouvez utiliser ce script :

<?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 voulez connaître plus de détails de l'appareil de l'utilisateur, j'ai recommandé d'utiliser l'une des solutions suivantes: http://51degrees.mobi ou http://deviceatlas.com

139
répondu Haim Evgi 2013-04-15 11:17:24
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
répondu Júlio Paulillo 2014-03-12 22:03:06
$browser = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
4
répondu Pwnna 2011-06-12 13:15:20
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
répondu MrBii 2014-06-25 07:24:47

Si vous voulez juste détecter les appareils mobiles dans generel, Cake a pris en charge la construction en utilisant RequestHandler - >isMobile () (http://book.cakephp.org/2.0/en/core-libraries/components/request-handling.html#RequestHandlerComponent::isMobile)

0
répondu bohoej 2014-05-07 07:57:44
<?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
répondu Mohini 2015-10-29 11:35:45
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
répondu Liuqing Hu 2016-08-08 07:02:48

La solution PHP de

51Degrees est capable de le faire. vous pouvez obtenir L'API Open Source gratuite 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 D'Apple, le résultat initial retournera un périphérique générique, mais si vous êtes intéressé par le périphérique spécifique, vous pouvez utiliser une substitution côté client JavaScript pour déterminer le modèle spécifique.

Pour ce faire, vous peut mettre en œuvre quelque chose de similaire à la logique suivante Une fois que vous avez déterminé qu'il est un appareil Apple, dans ce cas pour 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 51Degrees ont fait dans les appareils Apple, vous pouvez lire leur blog ici https://51degrees.com/blog/device-detection-for-apple-iphone-and-ipad .

Divulgation: je travaille pour 51Degrees.

0
répondu Zarwalski 2017-04-12 09:48:18

En réponse au code de Haim Evgi, j'ai ajouté !== false à 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
répondu Gloson 2017-12-12 16:47:33

Il est travail pour Iphone

<?php
  $browser = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
  if ($browser == true){
    $browser = 'iphone';
  }
?>
0
répondu Suresh Dhakal 2018-08-24 09:29:22