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 相关文章推荐
discuz Passport 通行证 整合笔记
Jun 30 PHP
解析用PHP实现var_export的详细介绍
Jun 20 PHP
9段PHP实用功能的代码推荐
Oct 14 PHP
php网页病毒清除类
Dec 08 PHP
php绘制一个矩形的方法
Jan 24 PHP
Symfony控制层深入详解
Mar 17 PHP
php的api数据接口书写实例(推荐)
Sep 22 PHP
Laravel框架基于ajax和layer.js实现无刷新删除功能示例
Jan 17 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
May 09 PHP
php基于 swoole 实现的异步处理任务功能示例
Aug 13 PHP
TP3.2.3框架文件上传操作实例详解
Jan 23 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
Apr 27 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
自动把纯文本转换成Web页面的php代码
2009/08/27 PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
2019/10/22 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
Js 订制自己的AlertBox(信息提示框)
2009/01/09 Javascript
JavaScript中valueOf函数与toString方法深入理解
2012/12/02 Javascript
node.js中的http.response.writeHead方法使用说明
2014/12/14 Javascript
js实现透明度渐变效果的方法
2015/04/10 Javascript
基于JS实现新闻列表无缝向上滚动实例代码
2016/01/22 Javascript
基于Jquery插件Uploadify实现实时显示进度条上传图片
2020/03/26 Javascript
微信小程序 vidao实现视频播放和弹幕的功能
2016/11/02 Javascript
AngularJS全局scope与Isolate scope通信用法示例
2016/11/22 Javascript
微信小程序 自定义对话框实例详解
2017/01/20 Javascript
angularJS之$http:与服务器交互示例
2017/03/17 Javascript
Vue ElementUI之Form表单验证遇到的问题
2017/08/21 Javascript
JS验证输入的是否是数字及保留几位小数问题
2018/05/09 Javascript
JavaScript+H5实现微信摇一摇功能
2018/05/23 Javascript
详解Axios统一错误处理与后置
2018/09/26 Javascript
Vue.js watch监视属性知识点总结
2019/11/11 Javascript
Python中实现对list做减法操作介绍
2015/01/09 Python
python 3.7.0 下pillow安装方法
2018/08/27 Python
python安装pywin32clipboard的操作方法
2019/01/24 Python
python单例模式原理与创建方法实例分析
2019/10/26 Python
Django使用消息提示简单的弹出个对话框实例
2019/11/15 Python
在Python中使用MongoEngine操作数据库教程实例
2019/12/03 Python
利用matplotlib为图片上添加触发事件进行交互
2020/04/23 Python
Pandas的数据过滤实现
2021/01/15 Python
python爬虫破解字体加密案例详解
2021/03/02 Python
求职毕业生自荐书
2014/02/08 职场文书
优秀学生事迹材料
2014/02/08 职场文书
人事部岗位职责范本
2014/03/05 职场文书
我的中国梦演讲稿600字
2014/08/19 职场文书
医药公司采购员岗位职责
2015/04/03 职场文书
2015年成本会计工作总结
2015/10/14 职场文书
初二数学教学反思
2016/02/17 职场文书
2016年小学植树节活动总结
2016/03/16 职场文书
css3手动实现pc端横向滚动
2022/06/21 HTML / CSS