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

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

有些时候,我们需要判断用户是否用手机访问,如果是手机的话,就跳转到指定的手机友好页面。这里就介绍一下,如何判断用户是否用手机访问。

 

自定义的函数如下:

$agent = check_wap();
if( $agent )
{
  header('Location: http://www.jb51.net');
  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;

 

   
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113581.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PDF工具_PDF editor

    PDF工具_PDF editor《Linux多线程服务端编程——使用muduoC++网络库》这本书是我自己用LaTeX排版的,在排版过程中也积累了一些小工具,今天把其中几个发布出来。这几个工具都直接基于开源的iText库,可从 http://itextpdf.com/ 下载。下载Groovy版本位于 https://github.com/chenshuo/typeset/tree/master/tools

    2022年9月3日
    3
  • 万能乘法速算法大全_小学数学各年级知识点和重点、难点大全,复习必备提纲!…

    万能乘法速算法大全_小学数学各年级知识点和重点、难点大全,复习必备提纲!…今天小数老师为不同年级的学生整理出小学数学重要知识点帮助小伙伴们及时查缺补漏哦!一年级的知识重点1数与计算(1)20以内数的认识,加法和减法。数数。数的组成、顺序、大小、读法和写法。加法和减法。连加、连减和加减混合式题(2)100以内数的认识。加法和减法。数数。个位、十位。数的顺序、大小、读法和写法。两位数加、减整十数和两位数加、减一位数的口算。两步计算的加减式题。2量与计量钟面的认识(…

    2022年6月7日
    61
  • 【翻译】.NET 5中的性能改进

    【翻译】.NET 5中的性能改进在.NETCore之前的版本中,其实已经在博客中介绍了在该版本中发现的重大性能改进。从.NETCore2.0到.NETCore2.1到.NETCore3.0的每一篇文章,发…

    2022年7月20日
    8
  • python使用教程_新手python入门教程

    python使用教程_新手python入门教程作者:Vamei出处:http://www.cnblogs.com/vamei欢迎转载,也请保留这段声明。谢谢!怎么能快速地掌握Python?这是和朋友闲聊时谈起的问题。Python包含的内容

    2022年8月2日
    4
  • vuerouter配置_vue面包屑

    vuerouter配置_vue面包屑介绍VueRouter是Vue.js官方的路由管理器。它和Vue.js的核心深度集成,让构建单页面应用变得易如反掌。包含的功能有:嵌套的路由/视图表模块化的、基于组件的路由配置路由参

    2022年8月7日
    3
  • 软件工程与软件测试_软件工程导论(第六版)

    软件工程与软件测试_软件工程导论(第六版)1.软件测试基础2.单元测试3.集成测试4. 确认测试5.白盒测试技术6.黑盒测试技术7.调试8.软件可靠性

    2022年10月4日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号