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 相关文章推荐
PHP memcache扩展的三种安装方法
Apr 26 PHP
PHP+MySQL 制作简单的留言本
Nov 02 PHP
PHP使用数组实现队列
Feb 05 PHP
简单实用的.net DataTable导出Execl
Oct 28 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
Mar 14 PHP
ThinkPHP3.1查询语言详解
Jun 19 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十三)
Jun 26 PHP
PHP中使用CURL模拟登录并获取数据实例
Jul 01 PHP
php生成RSS订阅的方法
Feb 13 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
Dec 10 PHP
WAF的正确bypass
Jan 05 PHP
PHP中Laravel 关联查询返回错误id的解决方法
Apr 01 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把空格、换行符、中文逗号等替换成英文逗号的正则表达式
2014/05/04 PHP
PHP获取POST数据的几种方法汇总
2015/03/03 PHP
PHP记录页面停留时间的方法
2016/03/30 PHP
ie6下png图片背景不透明的解决办法使用js实现
2013/01/11 Javascript
用于deeplink的js方法(判断手机是否安装app)
2014/04/02 Javascript
javascript中的正则表达式使用指南
2015/03/01 Javascript
Javascript实现的Map集合工具类完整实例
2015/07/31 Javascript
js实现上一页下一页的效果【附代码】
2016/03/10 Javascript
逻辑表达式中与或非的用法详解
2016/06/06 Javascript
jquery获取easyui日期控件的值实现方法
2016/11/09 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
2017/09/07 Javascript
JavaScript实现打印星型金字塔功能实例分析
2017/09/27 Javascript
基于滚动条位置判断的简单实例
2017/12/14 Javascript
python数据结构树和二叉树简介
2014/04/29 Python
跟老齐学Python之用while来循环
2014/10/02 Python
python实现输入数字的连续加减方法
2018/06/22 Python
Python3 导入上级目录中的模块实例
2019/02/16 Python
Python3离线安装Requests模块问题
2019/10/13 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
2019/11/11 Python
春节到了 教你使用python来抢票回家
2020/01/06 Python
Django实现列表页商品数据返回教程
2020/04/03 Python
python 实现"神经衰弱"翻牌游戏
2020/11/09 Python
英国创新设计文具、卡片和礼品包装网站:Paperchase
2018/07/14 全球购物
为什么使用接口?
2014/08/13 面试题
医学专业大学生求职的自我评价
2013/11/27 职场文书
劲霸男装广告词
2014/03/21 职场文书
医院保洁服务方案
2014/06/11 职场文书
公司市场专员岗位职责
2014/06/29 职场文书
中学生旷课检讨书模板
2014/10/08 职场文书
教师自查自纠材料
2014/10/14 职场文书
酒店前台岗位职责
2015/04/16 职场文书
芙蓉镇观后感
2015/06/10 职场文书
2015军训通讯稿大全
2015/07/18 职场文书
团组织关系介绍信
2019/06/24 职场文书
mysql的数据压缩性能对比详情
2021/11/07 MySQL
Nginx流量拷贝ngx_http_mirror_module模块使用方法详解
2022/04/07 Servers