检查是否从iOS设备访问PHP页面

我有一个简单的PHP网页,并希望返回不同的内容,这取决于从iPhone / iPad或Web浏览器访问。 我怎样才能做到这一点?

使用$_SERVER['HTTP_USER_AGENT']的用户代理,为了简单检测,您可以使用以下脚本:

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

如果你想知道用户设备的更多细节,我build议使用以下解决scheme之一: http : //51degrees.mobi或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; } 
 $browser = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone"); 
 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'; } } 

这是Iphone的工作,我用它在我的一些投资组合

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

如果你只是想检测移动设备,Cake已经使用RequestHandler-> isMobile()( http://book.cakephp.org/2.0/en/core-libraries/components/request-handling.html# RequestHandlerComponent :: isMobile )

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

51Degrees的PHP解决scheme能够做到这一点。 你可以在这里https://github.com/51Degrees/Device-Detection获得免费的开源API。; 您可以使用HardwareFamily属性来确定它是否是iPad / iPod / iPhone等。

由于苹果用户代理的性质,初始结果将返回一个通用设备,但是如果您对特定设备感兴趣,则可以使用JavaScript客户端覆盖来确定特定模型。

要做到这一点,一旦你确定它是一个苹果设备,在这种情况下,为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"; }; } 

或者用于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; } 

欲了解更多关于51Degrees对苹果设备的研究信息,你可以在这里阅读他们的博客文章https://51degrees.com/blog/device-detection-for-apple-iphone-and-ipad

披露:我为51Degrees工作。