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 相关文章推荐
MYSQL数据库初学者使用指南
Nov 16 PHP
PHP的explode和implode的使用说明
Jul 17 PHP
配置php网页显示各种语法错误
Sep 23 PHP
WordPress中"无法将上传的文件移动至"错误的解决方法
Jul 01 PHP
php获取汉字拼音首字母的方法
Oct 21 PHP
php文件上传后端处理小技巧
May 22 PHP
php获取客户端IP及URL的方法示例
Feb 03 PHP
mac os快速切换多个PHP版本的方法
Mar 07 PHP
php 广告点击统计代码(php+mysql)
Feb 21 PHP
PHP实现压缩图片尺寸并转为jpg格式的方法示例
May 10 PHP
phpinfo的知识点总结
Oct 10 PHP
laravel框架语言包拓展实现方法分析
Nov 22 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如何将XML转成数组
2016/04/04 PHP
laravel中命名路由的使用方法
2017/02/24 PHP
延时重复执行函数 lLoopRun.js
2007/05/08 Javascript
JQUERY 对象与DOM对象之两者相互间的转换
2009/04/27 Javascript
js 多浏览器分别判断代码
2010/04/01 Javascript
JavaScript 命名空间 使用介绍
2013/08/29 Javascript
jQuery 获取页面li数组并删除不在数组中的key
2016/08/02 Javascript
原生js轮播(仿慕课网)
2017/02/15 Javascript
mockjs+vue页面直接展示数据的方法
2018/12/19 Javascript
基于纯JS实现多张图片的懒加载Lazy过程解析
2019/10/14 Javascript
ES6使用新特性Proxy实现的数据绑定功能实例
2020/05/11 Javascript
python正则表达式抓取成语网站
2013/11/20 Python
Python subprocess模块学习总结
2014/03/13 Python
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
python与C互相调用的方法详解
2017/07/14 Python
Python3使用PyQt5制作简单的画板/手写板实例
2017/10/19 Python
Python中pillow知识点学习
2018/04/30 Python
使用Python将Mysql的查询数据导出到文件的方法
2019/02/25 Python
Python编写合并字典并实现敏感目录的小脚本
2019/02/26 Python
Python处理PDF与CDF实例
2020/02/26 Python
django model 条件过滤 queryset.filter(**condtions)用法详解
2020/05/20 Python
python如何从键盘获取输入实例
2020/06/18 Python
Python logging模块handlers用法详解
2020/08/14 Python
深入浅析css3 中display box使用方法
2015/11/25 HTML / CSS
美国女孩洋娃娃店:American Girl
2017/10/24 全球购物
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
阿根廷票务网站:StubHub阿根廷
2018/04/13 全球购物
水果超市创业计划书
2014/01/27 职场文书
事业单位分类改革实施方案
2014/03/21 职场文书
连带责任保证书
2014/04/29 职场文书
写给老师的保证书
2015/05/09 职场文书
《小小的船》教学反思
2016/02/18 职场文书
小学语文教学反思范文
2016/03/03 职场文书
Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)
2021/05/27 Servers
如何使用Python提取Chrome浏览器保存的密码
2021/06/09 Python
讨论nginx location 顺序问题
2022/05/30 Servers