web-dev-qa-db-de.com

Überprüfen Sie, ob auf die PHP-Seite von einem iOS-Gerät aus zugegriffen wird

Ich habe eine einfache PHP - Webseite und möchte verschiedene Inhalte zurückgeben, je nachdem, ob auf sie von einem iPhone/iPad oder von einem Webbrowser aus zugegriffen wird. Wie kann ich das machen?

58
Snilleblixten

Verwenden Sie den Benutzeragenten von $_SERVER['HTTP_USER_AGENT'], Und zur einfachen Erkennung können Sie this script verwenden: 

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

?> 

Wenn Sie weitere Details zum Benutzergerät erfahren möchten, empfehle ich eine der folgenden Lösungen: http://51degrees.mobi oder 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

Als Antwort auf den Kodex von Haim Evgi fügte ich am Ende! == false hinzu, damit es für mich funktioniert

$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

Es ist Arbeit für Iphone

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

Die 51Degrees-Lösung PHP ist dazu in der Lage. Die kostenlose Open Source API erhalten Sie hier https://github.com/51Degrees/Device-Detection . Sie können die HardwareFamily-Eigenschaft verwenden, um festzustellen, ob es sich um ein iPad/iPod/iPhone usw. handelt. 

Aufgrund der Art der Benutzeragenten von Apple wird das ursprüngliche Ergebnis ein generisches Gerät zurückgeben. Wenn Sie jedoch an einem bestimmten Gerät interessiert sind, können Sie eine clientseitige JavaScript-Überschreibung verwenden, um ein bestimmtes Modell festzulegen.

Dazu können Sie etwas Ähnliches wie die folgende Logik implementieren, sobald Sie festgestellt haben, dass es sich um ein Apple-Gerät handelt, in diesem Fall für ein 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";
};
}

Oder für ein 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;
}

Weitere Informationen zu 51Degrees, die auf Apple-Geräten durchgeführt wurden, können Sie hier lesen. Https://51degrees.com/blog/device-detection-for-Apple-iphone-and-ipad .

Offenlegung: Ich arbeite für 51 Grad.

0
Zarwalski

Wenn Sie nur mobile Geräte generell erkennen möchten, bietet Cake Unterstützung für RequestHandler-> isMobile () ( http://book.cakephp.org/2.0/de/core-libraries/components/request-handling). html # RequestHandlerComponent :: isMobile )

0
bohoej