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?
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
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;
}
?>
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;
C'est du travail pour Iphone
<?php
$browser = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
if ($browser == true){
$browser = 'iphone';
}
?>
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.
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 )