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 之 没有mysql支持时的替代方案
Oct 09 PHP
php中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
Aug 23 PHP
php读取mysql的简单实例
Jan 15 PHP
PHP实现格式化文件数据大小显示的方法
Jan 03 PHP
php简单socket服务器客户端代码实例
May 18 PHP
PHP执行shell脚本运行程序不产生core文件的方法
Dec 28 PHP
PHP设计模式之工厂模式详解
Oct 24 PHP
PHP实现浏览器格式化显示XML的方法示例
Jan 22 PHP
php array_chunk()函数用法与注意事项
Jul 12 PHP
php 使用 __call实现重载功能示例
Nov 18 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
Mar 26 PHP
php让json_encode不自动转义斜杠“/”的方法
Apr 27 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
Terran建筑一览
2020/03/14 星际争霸
PHP数组与对象之间使用递归实现转换的方法
2015/06/24 PHP
PHP获取文件扩展名的4种方法
2015/11/24 PHP
PHP获取数据库表中的数据插入新的表再原删除数据方法
2018/10/12 PHP
php文件操作之文件写入字符串、数组的方法分析
2019/04/15 PHP
页面中body onload 和 window.onload 冲突的问题的解决
2009/07/01 Javascript
JavaScript插入动态样式实现代码
2012/02/22 Javascript
select标签模拟/美化方法采用JS外挂式插件
2013/04/01 Javascript
jquery将一个表单序列化为一个对象的方法
2013/12/02 Javascript
form表单action提交的js部分与html部分
2014/01/07 Javascript
JavaScript学习笔记之定时器
2015/01/22 Javascript
基于javascript实现简单的抽奖系统
2020/04/15 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
2016/04/08 Javascript
使用Bootstrap框架制作查询页面的界面实例代码
2016/05/27 Javascript
基于ES6作用域和解构赋值详解
2017/11/03 Javascript
详解vantUI框架在vue项目中的应用踩坑
2018/12/06 Javascript
详解webpack引入第三方库的方式以及注意事项
2019/01/15 Javascript
vue+element项目中过滤输入框特殊字符小结
2019/08/07 Javascript
微信小程序停止其他视频播放当前视频的实例代码
2019/12/25 Javascript
python统计日志ip访问数的方法
2015/07/06 Python
Python用户推荐系统曼哈顿算法实现完整代码
2017/12/01 Python
django多文件上传,form提交,多对多外键保存的实例
2019/08/06 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
2020/09/03 Python
python switch 实现多分支选择功能
2020/12/21 Python
HTML5标签嵌套规则详解【必看】
2016/04/26 HTML / CSS
荷兰本土平价百货:HEMA
2017/10/23 全球购物
W Hamond官网:始于1979年的钻石专家
2020/07/20 全球购物
澳大利亚女装精品店:Alannah Hill
2020/07/29 全球购物
会计自我鉴定范文
2013/10/06 职场文书
学习党课思想汇报
2013/12/29 职场文书
小学生感恩父母演讲稿
2014/08/28 职场文书
老公保证书怎么写
2015/02/26 职场文书
刘胡兰观后感
2015/06/16 职场文书
JS数组的常用方法整理
2021/03/31 Javascript
Python中的xlrd模块使用整理
2021/06/15 Python
angular4实现带搜索的下拉框
2022/03/25 Javascript