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 相关文章推荐
数据库中排序的对比及使用条件详解
Feb 23 PHP
2个比较经典的PHP加密解密函数分享
Jul 01 PHP
ThinkPHP快速入门实例教程之数据分页
Jul 01 PHP
php绘制一个矩形的方法
Jan 24 PHP
php输出xml属性的方法
Mar 19 PHP
PHP数组相关函数汇总
Mar 24 PHP
PHP模板引擎smarty详细介绍
May 26 PHP
分享PHP函数实现数字与文字分页代码
Jul 28 PHP
一段实用的php验证码函数
May 19 PHP
thinkphp隐藏index.php/home并允许访问其他模块的实现方法
Oct 13 PHP
Yii2使用表单上传文件的实例代码
Aug 03 PHP
php实现表单提交上传文件功能
May 28 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 全局变量范围分析
2009/08/07 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
2013/01/23 PHP
destoon复制新模块的方法
2014/06/21 PHP
PHP开发框架laravel安装与配置教程
2015/03/13 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
键盘控制事件应用教程大全
2006/11/24 Javascript
jquery struts 验证唯一标识(公用方法)
2013/03/27 Javascript
实例讲解javascript注册事件处理函数
2016/01/09 Javascript
Angularjs中UI Router全攻略
2016/01/29 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
2016/06/12 Javascript
javascript输出AscII码扩展集中的字符方法
2016/12/26 Javascript
three.js 入门案例详解
2018/01/23 Javascript
nuxt框架中路由鉴权之Koa和Session的用法
2018/05/09 Javascript
原生js实现点击按钮复制内容到剪切板
2020/11/19 Javascript
微信小程序向Java后台传输参数的方法实现
2020/12/10 Javascript
[48:53]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第一场
2014/05/26 DOTA
Python isinstance函数介绍
2015/04/14 Python
基于数据归一化以及Python实现方式
2018/07/11 Python
python实现多进程代码示例
2018/10/31 Python
Python中文件的写入读取以及附加文字方法
2019/01/23 Python
Python利用sqlacodegen自动生成ORM实体类示例
2019/06/04 Python
python selenium 获取接口数据的实现
2020/12/07 Python
Alba Moda瑞士网上商店:独家意大利时尚女装销售
2016/11/28 全球购物
英国优质家居用品网上品牌:URBANARA
2018/06/01 全球购物
New Balance俄罗斯官方网上商店:购买运动鞋
2020/03/02 全球购物
英国最受欢迎的母婴精品品牌:JoJo Maman BéBé
2021/02/17 全球购物
下面关于"联合"的题目的输出是什么
2013/08/06 面试题
申报职称专业技术个人的自我评价
2013/12/12 职场文书
超市采购员岗位职责
2014/02/01 职场文书
祖国在我心中演讲稿200字
2014/08/28 职场文书
2014领导干部学习焦裕禄同志先进事迹思想汇报
2014/09/19 职场文书
政府个人对照检查材料思想汇报
2014/10/08 职场文书
2014年生活老师工作总结
2014/12/23 职场文书
工作会议通知
2015/04/15 职场文书
古诗之感恩老师
2019/10/24 职场文书
linux下安装redis图文详细步骤
2021/12/04 Redis