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 相关文章推荐
php str_pad 函数用法简介
Jul 11 PHP
php中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
May 04 PHP
PHP对象递归引用造成内存泄漏分析
Aug 28 PHP
ThinkPHP中自定义错误页面和提示页面实例
Nov 22 PHP
php使用Session和文件统计在线人数
Jul 04 PHP
64位windows系统下安装Memcache缓存
Dec 06 PHP
简单PHP会话(session)说明介绍
Aug 21 PHP
详谈php ip2long 出现负数的原因及解决方法
Apr 05 PHP
实例分析PHP中PHPMailer发邮件
Dec 13 PHP
PDO::exec讲解
Jan 28 PHP
PHP大文件切割上传功能实例分析
Jul 01 PHP
详解PHP中curl_multi并发的实现
Jun 08 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
WordPress开发中用于获取近期文章的PHP函数使用解析
2016/01/05 PHP
PHP数据库操作四:mongodb用法分析
2017/08/16 PHP
用jquery ajax获取网站Alexa排名的代码
2009/12/12 Javascript
JavaScript版DateAdd和DateDiff函数代码
2012/03/01 Javascript
javascript获取所有同类checkbox选项(实例代码)
2013/11/07 Javascript
jQuery中 prop() attr()使用详解
2015/05/19 Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
2015/08/24 Javascript
第四篇Bootstrap网格系统偏移列和嵌套列
2016/06/21 Javascript
AngularJS 中的Promise --- $q服务详解
2016/09/14 Javascript
如何使用Vuex+Vue.js构建单页应用
2016/10/27 Javascript
使用nodeJs来安装less及编译less文件为css文件的方法
2017/11/20 NodeJs
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
2018/04/28 Javascript
详解Webpack-dev-server的proxy用法
2018/09/08 Javascript
angular4 获取wifi列表中文显示乱码问题的解决
2018/10/20 Javascript
angularjs自定义过滤器demo示例
2019/08/24 Javascript
Javascript原型链及instanceof原理详解
2020/05/25 Javascript
解决Vue中的生命周期beforeDestory不触发的问题
2020/07/21 Javascript
js+canvas绘制图形验证码
2020/09/21 Javascript
实例讲解Python编程中@property装饰器的用法
2016/06/20 Python
pyhton列表转换为数组的实例
2018/04/04 Python
Python实现拷贝/删除文件夹的方法详解
2018/08/29 Python
深入理解Python异常处理的哲学
2019/02/01 Python
在Python中如何传递任意数量的实参的示例代码
2019/03/21 Python
Python画图高斯分布的示例
2019/07/10 Python
Python CVXOPT模块安装及使用解析
2019/08/01 Python
python+pygame实现坦克大战
2019/09/10 Python
Python list与NumPy array 区分详解
2019/11/06 Python
在pycharm中实现删除bookmark
2020/02/14 Python
python使用pandas抽样训练数据中某个类别实例
2020/02/28 Python
Python异常原理及异常捕捉实现过程解析
2020/03/25 Python
TripAdvisor日本:全球领先的旅游网站
2019/02/14 全球购物
Linux如何为某个操作添加别名
2013/03/01 面试题
Python使用openpyxl复制整张sheet
2021/03/24 Python
药学专业大学生自荐信
2013/09/28 职场文书
幼儿园安全责任书范本
2014/07/24 职场文书
生日赠语
2015/06/23 职场文书