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?
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
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;
}
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';
}
}
$browser = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
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;
}
<?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;
}
?>
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;
Es ist Arbeit für Iphone
<?php
$browser = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
if ($browser == true){
$browser = 'iphone';
}
?>
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.
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 )