[英]Mobile browser detection?
我们正在寻找一种方法来确定用户是否正在使用移动浏览器。 我们需要在 PHP 中通过解析用户代理字符串来执行此操作。 我知道这种方法有很多注意事项,但我们确实需要这样做。
你有什么建议吗? 一个好的(即使不是完美的)更新代码?
我知道 WURFL,我相信它很棒,但它不再免费用于非开源项目。 通过谷歌搜索,我还发现了这段代码: http://mobiforge.com/developing/story/lightweight-device-detection-php (以及一些变体),但我不确定。 看起来它写得很糟糕(例如,当他们使用 $mobile_browser = '0' 和 integer... 周围的引号时)。
你能推荐一些东西吗?
谢谢,
亚历山德罗
我正在使用这个:
$isMobile = (bool)preg_match('#\b(ip(hone|od)|android\b.+\bmobile|opera m(ob|in)i|windows (phone|ce)|blackberry'.
'|s(ymbian|eries60|amsung)|p(alm|rofile/midp|laystation portable)|nokia|fennec|htc[\-_]'.
'|up\.browser|[1-4][0-9]{2}x[1-4][0-9]{2})\b#i', $_SERVER['HTTP_USER_AGENT'] );
它很短,可以检测到大多数移动用户(或者更确切地说是智能手机)。 iPad 和 Android 平板电脑不会被归类为“移动设备”,因为它们的屏幕尺寸更大。
如果你也想捕捉平板电脑,你可以使用这个:
$isMobile = (bool)preg_match('#\b(ip(hone|od|ad)|android|opera m(ob|in)i|windows (phone|ce)|blackberry|tablet'.
'|s(ymbian|eries60|amsung)|p(laybook|alm|rofile/midp|laystation portable)|nokia|fennec|htc[\-_]'.
'|mobile|up\.browser|[1-4][0-9]{2}x[1-4][0-9]{2})\b#i', $_SERVER['HTTP_USER_AGENT'] );
我正在使用Mobile_Detect class 。 它几乎每周更新一次。 该代码在 HTTP 标头和用户代理字符串中查找“移动”设备的迹象。
演示← 在您的移动设备上运行
您可能只会使用:
include("Mobile_Detect.php");
$detect = new Mobile_Detect();
if ($detect->isMobile()) {
// any mobile platform
}
class 还尝试通过以下方式检测平板设备:
if($detect->isTablet()){
// any tablet
}
检测移动设备没有灵丹妙药,但在决定使用 WURLF、DeviceAtlas 等外部 API 之前,这是一个好的开始。
Floern 感谢您的代码!!!
我添加了Hp TouchPad 平板电脑:
hpwos
这里是:
$isMobile = (bool)preg_match('#\b(ip(hone|od|ad)|android|opera m(ob|in)i|windows (phone|ce)|blackberry||hpwos|tablet'。'| s(ymbian|eries60|amsung)|p(laybook|alm|rofile/midp|laystation 便携)|nokia|fennec|htc[-_]'.'|mobile|up.browser|[1-4][0- 9]{2}x[1-4][0-9]{2})\b#i', $_SERVER['HTTP_USER_AGENT'] );
您可以使用 PHP 的内置 function get_browser()
。 根据 PHP 手册,output 阵列具有platform
字段,可用于检测移动浏览器。
Mobiforge 还有一个轻量级的移动设备检测代码。
如果您不需要高级功能检测,可以使用此资源。 我认为新的 WURFL api 是 AGPL,所以它们是免费的。 无论如何,您可以使用旧版本,不是吗?
另外两个想法是:
对不起,我之前误读了你的问题
有一种非常简单的方法可以检测某人是在使用手机还是 PC
这就是我所做的
在我的表单显示结果中,我在表单数据捕获的最后添加了以下内容;
$msg .= "Referers: ".$_POST['Referers']. "\r\n";
然后就在我添加的字段下
[[input type="hidden" id="Referers" name="Referers" value="[[?php
echo "IP: " . $_SERVER['REMOTE_ADDR'];
echo "\nURL: " . $_SERVER['HTTP_REFERER'];
echo "\nWebsite: " . $URL;
echo "\n\nBrowser Type:" . $_SERVER['HTTP_USER_AGENT'];
?]]"]]
请注意,我更改了
结果在我的电子邮件中打印出来是这样的::
推荐人:IP:xxx.xxx.xxx.xxx //我隐藏了这个
URL: http://www.emailmarketingaustralia.com.au/Contact/index.php Website: http://www.emailmarketingaustralia.com.au
浏览器类型:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; HTC_Sensation_Z710e ; en-in) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16
有趣的是我在澳大利亚,但 GEO-REGION 将我列为 en-in(印度)
// 地质城市
如果您希望 IP 显示城市和国家,您也可以从 MAX MIND (www.maxmind.com) 获取数据
这既简单又干净,可以满足您的需要
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.