PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】


Posted in PHP onMarch 27, 2019

本文实例总结了PHP判断访客是否手机端(移动端浏览器)访问的方法。分享给大家供大家参考,具体如下:

在平常工作开发中,我们通常需要开发出PC端和移动端两个不同的系统,从而根据访问端的不同进入到不同的操作界面中。这就需要我们首先要对访问的客户端进行判断是PC端还是移动端。

本博文讨论使用PHP判断访问端是否是移动端(或是移动端浏览器)从而确定是移动端访问的4种方法:

1、根据 HTTP_X_WAP_PROFILE是否存在进行判断,存在则是移动端(部分服务商会屏蔽该信息)

/**
* 是否是移动端访问
* @desc 判断是否是移动端进行访问
* @方法一:判断是否有HTTP_X_WAP_PROFILE,有则一定是移动设备。
* @return bool
* $Author: Zhihua_W
*/
function isMobile1()
{
   if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])) {
     return true;
   } else {
     return false;
   }
}

2、根据HTTP_VIA信息进行判断,如果VIA信息含有wap则是移动设备(部分服务商会屏蔽该信息)

/**
 * 是否是移动端访问
 * @desc 判断是否是移动端进行访问
 * @方法二:判断HTTP_VIA信息是否含有wap信息,有则一定是移动设备。
 * @return bool
 * $Author: Zhihua_W
 */
 function isMobile2 ()
 {
   if (isset ($_SERVER['HTTP_VIA'])) {
     return true;
   } else {
     return false;
   }
 }

3、根据手机发送的客户端标志进行判断,此方法比较笨,并且兼容性有待提高

/**
* 是否是移动端访问
* @desc 判断是否是移动端进行访问
* @方法三:判断是否有HTTP_USER_AGENT信息是否是手机发送的客户端标志,有则一定是移动设备。
* @return bool
* $Author: Zhihua_W
*/
function isMobile3 ()
{
   if (isset ($_SERVER['HTTP_USER_AGENT'])) {
    $clientkeywords = array ('nokia', 'sony','ericsson','mot',
      'samsung','htc','sgh','lg','sharp',
      'sie-','philips','panasonic','alcatel',
      'lenovo','iphone','ipod','blackberry',
      'meizu','android','netfront','symbian',
      'ucweb','windowsce','palm','operamini',
      'operamobi','openwave','nexusone','cldc',
      'midp','wap','mobile'
      );
    // 从HTTP_USER_AGENT中查找手机浏览器的关键字
    if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))){
      return true;
    } else {
      return false;
    }
  } else {
    return false;
  }
}

4、根据协议进行判断,此方法有可能不正确或是判断不出来

/**
* 是否是移动端访问
* @desc 判断是否是移动端进行访问
* @方法四:判断HTTP_ACCEPT信息
* @return bool
* $Author: Zhihua_W
*/
function isMobile4()
{
  if (isset ($_SERVER['HTTP_ACCEPT'])) {
    // 如果只支持wml并且不支持html那一定是移动设备
    // 如果支持wml和html但是wml在html之前则是移动设备
    if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) {
    return true;
    } else {
    return false;
    }
  } else {
    return false;
  }
}

以上四种方法都存在部分缺陷和兼容性不好等问题,所以博友在用的时候可以将四种方法结合成一个方法进行判断。

PHP 相关文章推荐
第十二节--类的自动加载
Nov 16 PHP
PHP 变量定义和变量替换的方法
Jul 30 PHP
php ajax 静态分页过程形式
Sep 02 PHP
PHP获取数组中某元素的位置及array_keys函数应用
Jan 29 PHP
php去除数组中重复数据
Nov 18 PHP
php实现上传图片文件代码
Jul 19 PHP
又拍云异步上传实例教程详解
Apr 19 PHP
详解PHP中的 input属性(隐藏 只读 限制)
Aug 14 PHP
php二维数组按某个键值排序的实例讲解
Feb 15 PHP
ThinkPHP5.1验证码功能实现的示例代码
Jun 08 PHP
PHP 8新特性简介
Aug 18 PHP
php中Swoole的热更新实现代码实例
Mar 04 PHP
PHP实现数据四舍五入的方法小结【4种方法】
Mar 27 #PHP
PHP判断是否微信访问的方法示例
Mar 27 #PHP
PHP中localeconv()函数的用法
Mar 26 #PHP
PHP实现的支付宝支付功能示例
Mar 26 #PHP
PHP小程序支付功能完整版【基于thinkPHP】
Mar 26 #PHP
PHP实现微信退款的方法示例
Mar 26 #PHP
PHP设计模式之单例模式定义与用法分析
Mar 26 #PHP
You might like
php trim 去除空字符的定义与语法介绍
2010/05/31 PHP
PHP递归统计系统中代码行数
2019/09/19 PHP
调整小数的格式保留小数点后两位
2014/05/14 Javascript
jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证
2015/06/25 Javascript
jQuery实现带延迟效果的滑动菜单代码
2015/09/02 Javascript
基于jQuery实现仿搜狐辩论投票动画代码(附源码下载)
2016/02/18 Javascript
Vue数据驱动模拟实现3
2017/01/11 Javascript
最新Javascript程序员面试试题和解题方法
2017/11/23 Javascript
js时间戳与日期格式之间转换详解
2017/12/11 Javascript
一次记住JavaScript的6个正则表达式方法
2018/02/22 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
2018/11/14 jQuery
运用js实现图层拖拽的功能
2019/05/24 Javascript
javascript系统时间设置操作示例
2019/06/17 Javascript
js贪心算法 钱币找零问题代码实例
2019/09/11 Javascript
Vue filter 过滤当前时间 实现实时更新效果
2019/12/20 Javascript
JS实现简易留言板(节点操作)
2020/03/16 Javascript
node+vue实现文件上传功能
2020/05/28 Javascript
使用Webpack 搭建 Vue3 开发环境过程详解
2020/07/28 Javascript
js实现弹幕飞机效果
2020/08/27 Javascript
vscode自定义vue模板的实现
2021/01/27 Vue.js
跟老齐学Python之集合的关系
2014/09/24 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
2018/01/15 Python
Python3.5 创建文件的简单实例
2018/04/26 Python
Python自定义函数实现求两个数最大公约数、最小公倍数示例
2018/05/21 Python
django3.02模板中的超链接配置实例代码
2020/02/04 Python
pytorch中使用cuda扩展的实现示例
2020/02/12 Python
Django数据统计功能count()的使用
2020/11/30 Python
简单介绍CSS3中Media Query的使用
2015/07/07 HTML / CSS
泰坦健身器材:Titan Fitness
2018/02/13 全球购物
美国在线购买内衣网站:HerRoom
2020/02/22 全球购物
外贸实习生自荐信范文
2013/11/24 职场文书
人民调解员培训方案
2014/06/05 职场文书
信息员培训方案
2014/06/12 职场文书
工人先锋号申报材料
2014/12/29 职场文书
matplotlib之pyplot模块实现添加子图subplot的使用
2021/04/25 Python
Python-OpenCV教程之图像的位运算详解
2021/06/21 Python