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

Sni*_*ten 61 php iphone http-headers ios

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

Hai*_*vgi 155

使用来自的用户代理$_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
}

?> 
Run Code Online (Sandbox Code Playgroud)

如果您想了解用户设备的更多详细信息,我建议您使用以下解决方案之一:http://51degrees.mobihttp://deviceatlas.com

  • 但事实并非如此,我发现了.这些标题只是来自手机中的Safari.如果您从应用程序连接,它看起来像这样:app%20name/1.0 CFNetwork/485.13.8 Darwin/11.0.0.所以也许我可以寻找CFNetwork或Darwin,或者应用程序名称. (5认同)
  • 对我不起作用我在iPhone和iPad上获得1.1 CFNetwork/548.0.3 Darwin/11.0.0:S现在应该如何区分它们? (2认同)

Júl*_*llo 16

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;
}
Run Code Online (Sandbox Code Playgroud)


小智 8

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';
    }
}
Run Code Online (Sandbox Code Playgroud)