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 ajax 静态分页过程形式
Sep 02 PHP
PHP写的求多项式导数的函数代码
Jul 04 PHP
那些年我们错过的魔术方法(Magic Methods)
Jan 14 PHP
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
Feb 24 PHP
php支付宝手机网页支付类实例
Mar 04 PHP
PHP读取大文件的多种方法介绍
Apr 04 PHP
再谈PHP中单双引号的区别详解
Jun 12 PHP
PHPExcel中文帮助手册|PHPExcel使用方法(分享)
Jun 09 PHP
深入浅析PHP的session反序列化漏洞问题
Jun 15 PHP
php实现数字补零的方法总结
Sep 12 PHP
PHP的mysqli_sqlstate()函数讲解
Jan 23 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
Apr 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
Smarty安装配置方法
2008/04/10 PHP
PHP数组内存耗用太多问题的解决方法
2010/04/05 PHP
解析ajax事件的调用顺序
2013/06/17 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
2016/06/13 PHP
Yii使用smsto短信接口的函数demo示例
2016/07/13 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
2020/04/23 PHP
Jquery 组合form元素为json格式,asp.net反序列化
2009/07/09 Javascript
解决Extjs上传图片无法预览的解决方法
2012/03/22 Javascript
jQuery移除元素自动解绑事件实现思路及代码
2014/05/31 Javascript
自定义百度分享的分享按钮
2015/03/18 Javascript
基于jQuery实现仿QQ空间送礼物功能代码
2016/05/24 Javascript
jquery对象与DOM对象转化
2017/02/08 Javascript
微信小程序 navbar实例详解
2017/05/11 Javascript
vue-cli脚手架搭建的项目去除eslint验证的方法
2018/09/29 Javascript
vue实现简单的星级评分组件源码
2018/11/16 Javascript
基于vue实现一个神奇的动态按钮效果
2019/05/15 Javascript
Vue项目总结之webpack常规打包优化方案
2019/06/06 Javascript
解决vant title-active-color与title-inactive-color不生效问题
2020/11/03 Javascript
[03:00]DOTA2-DPC中国联赛1月18日Recap集锦
2021/03/11 DOTA
Python中使用ConfigParser解析ini配置文件实例
2014/08/30 Python
Python实现的手机号归属地相关信息查询功能示例
2017/06/08 Python
基于python内置函数与匿名函数详解
2018/01/09 Python
Python多线程扫描端口代码示例
2018/02/09 Python
关于Tensorflow中的tf.train.batch函数的使用
2018/04/24 Python
python中for循环输出列表索引与对应的值方法
2018/11/07 Python
Python中*args和**kwargs的区别详解
2019/09/17 Python
Python中 Global和Nonlocal的用法详解
2020/01/20 Python
如何用python免费看美剧
2020/08/11 Python
python识别验证码的思路及解决方案
2020/09/13 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
CSS3 实现footer 固定在底部(无论页面多高始终在底部)
2019/10/15 HTML / CSS
Huda Beauty官方商店:化妆和美容产品
2020/09/05 全球购物
高中生校园生活自我评价
2013/09/19 职场文书
外国人聘用意向书
2014/04/01 职场文书
大学生自我评价范文
2015/03/03 职场文书
主持人开场白台词
2015/05/29 职场文书