繁体   English   中英

移动浏览器检测?

[英]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,所以它们是免费的。 无论如何,您可以使用旧版本,不是吗?

另外两个想法是:

  1. 一些主要运营商插入他们自己的 header:如果您愿意,可以使用这个,只要用户通过运营商网络。
  2. 您可以使用 JavaScript 来检测屏幕尺寸。 许多公司正在尝试通过制作微小的 web 页面来实现响应式设计:所以,这可能是一种更好、更简单的方法。 此外,HTML5 具有媒体查询,可根据屏幕尺寸更改 css。

对不起,我之前误读了你的问题

有一种非常简单的方法可以检测某人是在使用手机还是 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM