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 相关文章推荐
多文件上传的例子
Oct 09 PHP
php escape URL编码
Dec 10 PHP
PHP中的float类型使用说明
Jul 27 PHP
php array的学习笔记
May 10 PHP
php分页思路以及在ZF中的使用
May 30 PHP
基于Linux调试工具strace与gdb的常用命令总结
Jun 03 PHP
解析PHP中empty is_null和isset的测试
Jun 29 PHP
PHP循环结构实例讲解
Feb 10 PHP
php实现的简单检验登陆类
Jun 18 PHP
PHP常用工具类大全附全部代码下载
Dec 07 PHP
PHP实现批量检测网站是否能够正常打开的方法
Aug 23 PHP
php compact 通过变量创建数组
Nov 15 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操作excel文件 基于phpexcel
2010/07/02 PHP
php截取字符串并保留完整xml标签的函数代码
2013/02/06 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
2013/04/25 PHP
PHP实现搜索相似图片
2015/09/22 PHP
php封装的mongodb操作类代码
2017/08/06 PHP
PHP高效获取远程图片尺寸和大小的实现方法
2017/10/20 PHP
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
2007/04/12 Javascript
基于JQuery框架的AJAX实例代码
2009/11/03 Javascript
Javascript 复制数组实现代码
2009/11/26 Javascript
利用函数的惰性载入提高javascript代码执行效率
2014/05/05 Javascript
Javascript仿PHP $_GET获取URL中的参数
2014/05/12 Javascript
JavaScript中的继承方式详解
2015/02/11 Javascript
js实现星星打分效果的方法
2020/07/05 Javascript
JavaScript在网页中画圆的函数arc使用方法
2015/11/13 Javascript
js实现索引图片切换效果
2015/11/21 Javascript
JavaScript基础篇(6)之函数表达式闭包
2015/12/11 Javascript
详解Vue 非父子组件通信方法(非Vuex)
2017/05/24 Javascript
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
jQuery实现点击旋转,再点击恢复初始状态动画效果示例
2018/12/11 jQuery
详解python的几种标准输出重定向方式
2016/08/15 Python
Python实现删除列表中满足一定条件的元素示例
2017/06/12 Python
python进阶_浅谈面向对象进阶
2017/08/17 Python
基于python实现简单日历
2018/07/28 Python
Python 互换字典的键值对实例
2019/02/12 Python
python Kmeans算法原理深入解析
2019/08/23 Python
用Python爬取QQ音乐评论并制成词云图的实例
2019/08/24 Python
Python如何优雅获取本机IP方法
2019/11/10 Python
如何基于Python爬虫爬取美团酒店信息
2020/11/03 Python
使用canvas一步步实现图片打码功能的方法
2019/06/17 HTML / CSS
MCM英国官网:奢侈皮具制品
2017/04/18 全球购物
护士自荐信怎么写
2013/10/18 职场文书
如何写好优秀的创业计划书
2014/01/30 职场文书
《三顾茅庐》教学反思
2014/04/10 职场文书
个人工作年终总结
2015/03/09 职场文书
情侣之间的道歉短信
2015/05/12 职场文书
Win11开始菜单添加休眠选项
2022/04/19 数码科技