使用 User-Agent 中的字符串,并结合 HTTP Header,来检测移动设备环境。
可以检测出所用的设备类型(包括操作类型,以及手机品牌等都能检测)和浏览器的详细信息。
当用户使用移动终端访问网站时,我们可以通过程序检测用户终端类型,如果是手机用户,则引导用户访问适配手机屏幕的移动站点。接下来我们介绍分别使用PHP和JAVASCRIPT代码判断用户终端类型。
abc123
PHP版
我们使用PHP的$_SERVER[‘HTTP_USER_AGENT’]来获取手机用户浏览器的用户代理,然后匹配已有的各种手机浏览器代理库,如果含有匹配的关键字,则判断为移动终端用户。
function is_mobile() {
$user_agent = $_SERVER[‘HTTP_USER_AGENT’];
$mobile_agents = array(“240×320″,”acer”,”acoon”,”acs-”,”abacho”,”ahong”,”airness”,”alcatel”,
“amoi”,”android”,”anywhereyougo.com”,”applewebkit/525″,”applewebkit/532″,”asus”,”audio”,
“au-mic”,”avantogo”,”becker”,”benq”,”bilbo”,”bird”,”blackberry”,”blazer”,”bleu”,
“cdm-”,”compal”,”coolpad”,”danger”,”dbtel”,”dopod”,”elaine”,”eric”,”etouch”,”fly “,
“fly_”,”fly-”,”go.web”,”goodaccess”,”gradiente”,”grundig”,”haier”,”hedy”,”hitachi”,
“htc”,”huawei”,”hutchison”,”inno”,”ipad”,”ipaq”,”iphone”,”ipod”,”jbrowser”,”kddi”,
“kgt”,”kwc”,”lenovo”,”lg “,”lg2″,”lg3″,”lg4″,”lg5″,”lg7″,”lg8″,”lg9″,
“lg-”,”lge-”,”lge9″,”longcos”,”maemo”,
“mercator”,”meridian”,”micromax”,”midp”,”mini”,”mitsu”,”mmm”,”mmp”,”mobi”,”mot-”,
“moto”,”nec-”,”netfront”,”newgen”,”nexian”,”nf-browser”,”nintendo”,”nitro”,”nokia”,
“nook”,”novarra”,”obigo”,”palm”,”panasonic”,”pantech”,”philips”,”phone”,”pg-”,
“playstation”,”pocket”,”pt-”,”qc-”,”qtek”,”rover”,”sagem”,”sama”,”samu”,”sanyo”,
“samsung”,”sch-”,”scooter”,”sec-”,”sendo”,”sgh-”,”sharp”,”siemens”,”sie-”,”softbank”,
“sony”,”spice”,”sprint”,”spv”,”symbian”,”tablet”,”talkabout”,”tcl-”,”teleca”,”telit”,
“tianyu”,”tim-”,”toshiba”,”tsm”,”up.browser”,”utec”,”utstar”,”verykool”,”virgin”,
“vk-”,”voda”,”voxtel”,”vx”,”wap”,”wellco”,”wig browser”,”wii”,”windows ce”,
“wireless”,”xda”,”xde”,”zte”);
$is_mobile = false;
foreach ($mobile_agents as $device) {
if (stristr($user_agent, $device)) {
$is_mobile = true;
break;
}
}
return $is_mobile;
}
is_mobile()来判断用户终端类型,将收集到的当今各种手机的HTTP_USER_AGENT归结到数组$mobile_agents中,并进行匹配。使用时只需调用函数is_mobile()。如以下代码表示,当匹配用户为手机访问时,页面跳转到网站手机版m.xxx.com。
if (is_mobile()) {
header(‘Location:http://m.xxx.com’);
} else {
echo ‘请使用手机访问.’;
}
Javascript版
您也可以直接在前端页面上加入一段Javascript脚本来判断用户的终端类型。Javascript也是通过获取浏览器的user-agent信息,然后匹配已有的user-agent信息库。
if ((navigator.userAgent.match(/(iPhone|iPod|Android|ios|iOS|iPad|Backerry|WebOS|Symbian|Windows Phone|Phone)/i)))
{
location.replace(“http://m.xxx.com”)
}else{
document.write(“请使用手机访问.”);
}
另外 php 判断浏览器的类型还可以通过 php 系统函数 get_browser() 函数,这个函数将会返回用户浏览器的一些性能数据。该函数通过查阅用户的 browscap.ini 文件,来测定用户浏览器的性能。若成功,则该函数返回包含用户浏览器信息的一个对象或一个数组,若失败,则返回 false。
get_browser 语法
get_browser(user_agent,return_array)
这个函数有两个参数,参数意义解释如下:
user_agent 可选。规定 HTTP 用户代理的名称。默认是 $HTTP_USER_AGENT 的值。您可以通过设置 NULL 绕过该参数。
return_array 可选。如果该参数设置为 true,本函数会返回一个数组而不是对象。
对于 php 通过 $_SERVER[‘HTTP_USER_AGENT’] 和 get_browser 获取的浏览器信息,我们可以通过如下例子来认识一下:
- <?php
- echo $_SERVER[‘HTTP_USER_AGENT’] . ”<br /><br />”;
- $browser = get_browser(null,true);
- print_r($browser);
- ?>
07/01/2014