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数组应该有多大的分析
Jul 30 PHP
PHP 创建标签云函数代码
May 26 PHP
函数中使用require_once问题深入探讨 优雅的配置文件定义方法推荐
Jul 02 PHP
深入分析PHP引用(&)
Sep 04 PHP
php查询mysql数据库并将结果保存到数组的方法
Mar 18 PHP
PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
May 11 PHP
在Debian系统下配置LNMP的教程
Jul 09 PHP
PHP实现163邮箱自动发送邮件
Mar 29 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
Sep 23 PHP
遍历echsop的region表形成缓存的程序实例代码
Nov 01 PHP
php将html转为图片的实现方法
May 19 PHP
PHP实现新型冠状病毒疫情实时图的实例
Feb 04 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
example1.php
2006/10/09 PHP
PHP的可变变量名的使用方法分享
2012/02/05 PHP
PHP反向代理类代码
2014/08/15 PHP
typecho插件编写教程(三):保存配置
2015/05/28 PHP
使用jQuery的ajax功能实现的RSS Reader 代码
2009/09/03 Javascript
Javascript setInterval的两种调用方法(实例讲解)
2013/11/29 Javascript
javascript计算用户打开网页的停留时间
2014/01/09 Javascript
json字符串之间的相互转换示例代码
2014/08/21 Javascript
Node.js和MongoDB实现简单日志分析系统
2015/04/25 Javascript
jQuery插件 Jqplot图表实例
2016/06/18 Javascript
通过BootStrap实现轮播图的实际应用
2016/09/26 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
2017/08/06 Javascript
node下使用UglifyJS压缩合并JS文件的方法
2018/03/07 Javascript
JS模拟实现哈希表及应用详解
2018/05/04 Javascript
详解如何使用koa实现socket.io官网的例子
2018/11/04 Javascript
vue 实现微信浮标效果
2019/09/01 Javascript
Vue根据条件添加click事件的方式
2019/11/09 Javascript
JS中作用域以及变量范围分析
2020/07/18 Javascript
微信小程序实现上传照片代码实例解析
2020/08/04 Javascript
Python写的英文字符大小写转换代码示例
2015/03/06 Python
Python OpenCV处理图像之图像像素点操作
2018/07/10 Python
利用anaconda保证64位和32位的python共存
2021/03/09 Python
Answear匈牙利:来自全球200多个知名时尚品牌
2017/04/21 全球购物
Under Armour安德玛德国官网:美国高端运动科技品牌
2019/03/09 全球购物
英国儿童鞋和靴子:Start-Rite
2019/05/06 全球购物
岗位职责范本
2013/11/23 职场文书
企业演讲稿范文
2013/12/28 职场文书
偷看我的初中毕业鉴定
2014/01/29 职场文书
民主生活会发言材料
2014/10/20 职场文书
社区母亲节活动总结
2015/02/10 职场文书
幼儿园小班教育随笔
2015/08/14 职场文书
送给教师们,到底该如何写好教学反思?
2019/07/02 职场文书
python使用glob检索文件的操作
2021/05/20 Python
SQL基础的查询语句
2021/11/11 MySQL
Kubernetes关键组件与结构组成介绍
2022/03/31 Servers
python套接字socket通信
2022/04/01 Python