php网站判断用户是否是手机访问的方法


Posted in PHP onNovember 01, 2013

随着移动设备的普及,网站也会迎来越来越多移动设备的访问。用适应PC的页面,很多时候对手机用户不友好,那么有些时候,我们需要判断用户是否用手机访问,如果是手机的话,就跳转到指定的手机友好页面。这里就介绍一下,如何判断用户是否用手机访问。

自定义的函数如下:

$agent = check_wap();
if( $agent )
{
  header('Location: https://3water.com');
  exit;
}
 
// check if wap 
function check_wap(){
  // 先检查是否为wap代理,准确度高
  if(stristr($_SERVER['HTTP_VIA'],"wap")){
    return true;
  }
  // 检查浏览器是否接受 WML.
  elseif(strpos(strtoupper($_SERVER['HTTP_ACCEPT']),"VND.WAP.WML") > 0){
    return true;
  }
  //检查USER_AGENT
  elseif(preg_match('/(blackberry|configuration\/cldc|hp |hp-|htc |htc_|htc-|iemobile|kindle|midp|mmp|motorola|mobile|nokia|opera mini|opera |Googlebot-Mobile|YahooSeeker\/M1A1-R2D2|android|iphone|ipod|mobi|palm|palmos|pocket|portalmmm|ppc;|smartphone|sonyericsson|sqh|spv|symbian|treo|up.browser|up.link|vodafone|windows ce|xda |xda_)/i', $_SERVER['HTTP_USER_AGENT'])){
    return true;       
  }
  else{
    return false;  
  }
}

再来一个从PHP框架剥离的判断是否为手机移动终端的函数:(经过测试,很全面,推荐使用)

function is_mobile_request()  
{  
 $_SERVER['ALL_HTTP'] = isset($_SERVER['ALL_HTTP']) ? $_SERVER['ALL_HTTP'] : '';  
 $mobile_browser = '0';  
 if(preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|iphone|ipad|ipod|android|xoom)/i', strtolower($_SERVER['HTTP_USER_AGENT'])))  
  $mobile_browser++;  
 if((isset($_SERVER['HTTP_ACCEPT'])) and (strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml') !== false))  
  $mobile_browser++;  
 if(isset($_SERVER['HTTP_X_WAP_PROFILE']))  
  $mobile_browser++;  
 if(isset($_SERVER['HTTP_PROFILE']))  
  $mobile_browser++;  
 $mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'],0,4));  
 $mobile_agents = array(  
    'w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac',  
    'blaz','brew','cell','cldc','cmd-','dang','doco','eric','hipt','inno',  
    'ipaq','java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-',  
    'maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-',  
    'newt','noki','oper','palm','pana','pant','phil','play','port','prox',  
    'qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar',  
    'sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-',  
    'tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp',  
    'wapr','webc','winw','winw','xda','xda-' 
    );  
 if(in_array($mobile_ua, $mobile_agents))  
  $mobile_browser++;  
 if(strpos(strtolower($_SERVER['ALL_HTTP']), 'operamini') !== false)  
  $mobile_browser++;  
 // Pre-final check to reset everything if the user is on Windows  
 if(strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'windows') !== false)  
  $mobile_browser=0;  
 // But WP7 is also Windows, with a slightly different characteristic  
 if(strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'windows phone') !== false)  
  $mobile_browser++;  
 if($mobile_browser>0)  
  return true;  
 else 
  return false;
PHP 相关文章推荐
配置支持SSI
Nov 25 PHP
php下用GD生成生成缩略图的两个选择和区别
Apr 17 PHP
PHP中include与require使用方法区别详解
Oct 19 PHP
非常实用的php弹出错误警告函数扩展性强
Jan 17 PHP
ThinkPHP3.1新特性之多层MVC的支持
Jun 19 PHP
PHP文件上传判断file是否己选择上传文件的方法
Nov 10 PHP
php通过递归方式复制目录和子目录的方法
Mar 13 PHP
PHP封装的HttpClient类用法实例
Jun 17 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
Mar 09 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
Mar 10 PHP
PHP htmlentities()函数用法讲解
Feb 25 PHP
PHP面向对象程序设计之构造方法和析构方法详解
Jun 13 PHP
php合并js请求的例子
Nov 01 #PHP
php上传文件中文文件名乱码的解决方法
Nov 01 #PHP
PHP防止跨域提交表单
Nov 01 #PHP
PHP查询网站的PR值
Oct 30 #PHP
PHP禁止个别IP访问网站
Oct 30 #PHP
php cURL和Rolling cURL并发方式比较
Oct 30 #PHP
使用PHP Socket写的POP3类
Oct 30 #PHP
You might like
php的数组与字符串的转换函数整理汇总
2013/07/18 PHP
PHP函数in_array()使用详解
2014/08/20 PHP
如何让CI框架支持service层
2014/10/29 PHP
制作安全性高的PHP网站的几个实用要点
2014/12/30 PHP
layui数据表格自定义每页条数limit设置
2019/10/26 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
2020/04/06 PHP
Extjs优化(一)删除冗余代码提高运行速度
2013/04/15 Javascript
jquery ajax 局部刷新小案例
2014/02/08 Javascript
jQuery实现统计复选框选中数量
2014/11/24 Javascript
浅谈JavaScript数据类型及转换
2015/02/28 Javascript
基于Vuejs实现购物车功能
2016/08/02 Javascript
JS开发中基本数据类型具体有哪几种
2017/10/19 Javascript
Vue中Axios从远程/后台读取数据
2019/01/21 Javascript
vue-cli webpack配置文件分析
2019/05/20 Javascript
[02:06]DOTA2肉山黑名单魔法终结者 敌法师中文配音鉴赏
2013/06/17 DOTA
Python 代码性能优化技巧分享
2012/08/07 Python
详解Python中列表和元祖的使用方法
2015/04/25 Python
Python模块文件结构代码详解
2018/02/03 Python
Windows环境下python环境安装使用图文教程
2018/03/13 Python
基于Django统计博客文章阅读量
2019/10/29 Python
Python tkinter模版代码实例
2020/02/05 Python
python3中sorted函数里cmp参数改变详解
2020/03/12 Python
Python实现自动签到脚本功能
2020/08/20 Python
python利用platform模块获取系统信息
2020/10/09 Python
利用Python批量识别电子账单数据的方法
2021/02/08 Python
基于HTML5的WebGL实现json和echarts图表展现在同一个界面
2017/10/26 HTML / CSS
普通院校学生的自荐信
2013/11/27 职场文书
大专生毕业的自我评价
2014/02/06 职场文书
绿化工程实施方案
2014/03/17 职场文书
《穷人》教学反思
2014/04/08 职场文书
请假条标准格式规范
2014/04/10 职场文书
纠纷协议书
2014/04/16 职场文书
入党积极分子党小组意见
2015/06/02 职场文书
新郎父母婚礼致辞
2015/07/27 职场文书
2016医师资格考试考生诚信考试承诺书
2016/03/25 职场文书