判断用户是否使用移动设备使用PHP浏览我的网站的最简单方法是什么?

我遇到过许多类,你可以使用,但我希望一个简单的if条件!

有什么办法可以让我这么做吗?


当前回答

没有可靠的方法。您也许可以查看user-agent字符串,但这可能会被欺骗或省略。或者,您也可以使用GeoIP服务来查找客户机的IP地址,但同样,这可以很容易地避免。

其他回答

51Degrees.com的PHP设备检测正是您想要的-检测移动设备和与被检测设备相关的各种属性。它使用简单,不需要维护。设置是在4个简单的步骤:

从http://sourceforge.net/projects/fiftyone/下载Zip文件。 将文件解压缩到PHP服务器中的一个目录中。 然后将以下代码添加到PHP页面: require_once“路径/ /核心/ 51 degrees.php”; require_once“路径/ /核心/ 51 degrees_usage.php”; 所有可用的设备信息将包含在$_51d数组中: 如果($ _51d [' IsMobile ']) { //在这里开始为移动设备编码。 }

51Degrees设备检测器不使用正则表达式进行检测。只有HTTP报头的重要部分才用于匹配设备。这使得这个解决方案是最快的(在普通硬件上每秒检测500万次)和最准确的(准确率99.97%),因为每周有数百个新设备添加到数据库中(支持的设备类型包括控制台、智能电视、电子阅读器、平板电脑等)。

该软件是在Mozilla公共许可证2下发布的开源软件,与商业和开源项目兼容。51Degrees解决方案还包含一个补充的PHP图像优化器,可以自动调整移动设备的图像大小。

By default 51Degrees PHP device detector uses Lite data file which is free and contains over 30000 devices and 50 properties for each device. Lite file is updated once every 3 month. If you want to have a higher level of details about requesting mobile devices, then Premium and Enterprise data files are available. Premium contains well over 70000 devices and 100 properties for each device with weekly updates. Enterprise is updated daily and contains over 150000 devices with 150 properties for each.

设备属性的完整列表。 比较数据文件。

我编写这个脚本是为了用PHP检测移动浏览器。

该代码根据用户代理字符串通过preg_match()ing单词检测用户,这些单词在数百次测试后只在移动设备的用户代理字符串中找到。它在当前所有移动设备上都有100%的准确性,我目前正在更新它,以支持更多的移动设备。代码名为isMobile,如下所示:

function isMobile() {
    return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]);
}

你可以这样使用它:

// Use the function
if(isMobile()){
    // Do something for only mobile users
}
else {
    // Do something for only desktop users
}

要将用户重定向到您的移动站点,我会这样做:

// Create the function, so you can use it
function isMobile() {
    return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]);
}
// If the user is on a mobile device, redirect them
if(isMobile()){
    header("Location: http://m.yoursite.com/");
}

也许结合一些javascript和PHP可以达到这个目的

<?php
$string = '<script>';
$string .= 'if ( /Opera|OPR\/|Puffin|Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) { ';
$string .= '        alert("CELL")';
$string .= '    } else {';
$string .= '        alert("NON CELL")';
$string .= '    }       ';  
$string .= '</script>'; 
echo $string;
?>

我也将其与纯javascript一起使用

这个简单的解决方案

if(
    
    strpos($_SERVER['HTTP_USER_AGENT'],'Phone')
    |
    strpos($_SERVER['HTTP_USER_AGENT'],'Android')
    
    
){      echo "should be mobile";                }
else{   echo "give them the desktop version";   }

适用于我测试的大多数设备(通过浏览器开发工具设备模拟)。

当然,你可以简单地使用echo($_SERVER['HTTP_USER_AGENT'])查看自己使用的值。

在我的情况下,唯一丢失的智能手机设备是黑莓z30,我通过检查“触摸”来修复它。对于诺基亚N9,我也检查了“诺基亚”。显然,如果发现“未检查”,可以将这些添加到更多设备上。但现在,这可能比上面一些更复杂的字符串扫描模式更好/更快地理解。

function isMobileDev(){
    if(!empty($_SERVER['HTTP_USER_AGENT'])){
       $user_ag = $_SERVER['HTTP_USER_AGENT'];
       if(preg_match('/(Mobile|Android|Tablet|GoBrowser|[0-9]x[0-9]*|uZardWeb\/|Mini|Doris\/|Skyfire\/|iPhone|Fennec\/|Maemo|Iris\/|CLDC\-|Mobi\/)/uis',$user_ag)){
          return true;
       };
    };
    return false;
}