判断访客终端类型集锦


Posted in Javascript onJune 05, 2015

当用户使用手机等移动终端访问网站时,我们可以通过程序检测用户终端类型,如果是手机用户,则引导用户访问适配手机屏幕的移动站点。本文将介绍分别使用PHP和JAVASCRIPT代码判断用户终端类型。

PHP版

我们使用PHP的$_SERVER['HTTP_USER_AGENT']来获取手机用户浏览器的用户代理,然后匹配已有的各种手机浏览器代理库,如果含有匹配的关键字,则判断为手机(移动终端)用户。

function is_mobile() { 
  $user_agent = $_SERVER['HTTP_USER_AGENT']; 
  $mobile_agents = array("240x320","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.3water.com。

if (is_mobile()) { 
  header('Location:http://m.3water.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.3water.com") 
}else{ 
  document.write("请使用手机访问."); 
}

以上代码还不是很完善,有兴趣的朋友欢迎补充。

当然,我们也可以通过响应式布局来匹配各种不同屏幕,这样可以节约开发成本,但是当客户对移动网站的功能需求,对于独立的移动站点最好是采用在网站入口处判断用户访问终端类型,一般是我们在主站首页就做判断,如果是手机访客则跳转到手机版页面,否则按正常PC方式访问页面。

Javascript 相关文章推荐
Jquery Ajax学习实例5 向WebService发出请求,返回泛型集合数据的异步调用
Mar 17 Javascript
javascript去掉前后空格的实例
Nov 07 Javascript
JS对字符串编码的几种方式使用指南
May 14 Javascript
JavaScript设置表单上传时文件个数的方法
Aug 11 Javascript
Angular Js文件上传之form-data
Aug 28 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
Jul 09 Javascript
D3.js中强制异步文件读取同步的几种方法
Feb 06 Javascript
详解如何使用webpack+es6开发angular1.x
Aug 16 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
Nov 22 Javascript
vue组件 keep-alive 和 transition 使用详解
Oct 11 Javascript
JS定时器如何实现提交成功提示功能
Jun 12 Javascript
详解JavaScript中Arguments对象用途
Aug 30 Javascript
JavaScript中constructor()方法的使用简介
Jun 05 #Javascript
JavaScript中的原型prototype属性使用详解
Jun 05 #Javascript
HTML5使用DeviceOrientation实现摇一摇功能
Jun 05 #Javascript
简介JavaScript中POSITIVE_INFINITY值的使用
Jun 05 #Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
Jun 05 #Javascript
jQuery+HTML5实现手机摇一摇换衣特效
Jun 05 #Javascript
在JavaScript中使用NaN值的方法
Jun 05 #Javascript
You might like
php使用array_search函数实现数组查找的方法
2015/06/12 PHP
php使用正则验证中文
2016/04/06 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
2017/03/04 PHP
Yii2框架视图(View)操作及Layout的使用方法分析
2019/05/27 PHP
js null undefined 空区别说明
2010/06/13 Javascript
jQuery的animate函数学习记录
2014/08/08 Javascript
JavaScript解析json格式数据简单示例
2014/12/09 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖放商品放置购物车
2015/11/30 Javascript
JSONObject使用方法详解
2015/12/17 Javascript
Bootstrap表单简单实现代码
2017/03/06 Javascript
js利用for in循环获取 一个对象的所有属性以及值的实例
2017/03/30 Javascript
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
vue中将网页打印成pdf实例代码
2017/06/15 Javascript
JS实现新建文件夹功能
2017/06/17 Javascript
js事件委托和事件代理案例分享
2017/07/25 Javascript
在 Node.js 中使用 async 函数的方法
2017/11/17 Javascript
JavaScript设计模式之构造函数模式实例教程
2018/07/02 Javascript
详解Angular如何正确的操作DOM
2018/07/06 Javascript
Vue 项目分环境打包的方法示例
2018/08/03 Javascript
python读取Android permission文件
2013/11/01 Python
Python中使用pprint函数进行格式化输出的教程
2015/04/07 Python
python中map()与zip()操作方法
2016/02/27 Python
Python常见字符串操作函数小结【split()、join()、strip()】
2018/02/02 Python
详解python爬虫系列之初识爬虫
2019/04/06 Python
Python2.7版os.path.isdir中文路径返回false的解决方法
2019/06/21 Python
Python selenium环境搭建实现过程解析
2020/09/08 Python
如何用canvas实现在线签名的示例代码
2018/07/10 HTML / CSS
html5 canvas实现给图片添加平铺水印
2019/08/20 HTML / CSS
俄罗斯在线大型超市:ТутПросто
2021/01/08 全球购物
经济管理专业毕业生自荐信范文
2014/01/02 职场文书
餐厅总厨求职信
2014/03/04 职场文书
群众路线教育实践活动剖析材料
2014/09/30 职场文书
自我检讨书范文
2015/01/28 职场文书
社交电商模式的兴起:这些新的商机千万别错过
2019/07/26 职场文书
SpringBoot实现quartz定时任务可视化管理功能
2021/08/30 Java/Android
Python使用mitmproxy工具监控手机 下载手机小视频
2022/04/18 Python