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 相关文章推荐
asp和php下textarea提交大量数据发生丢失的解决方法
Jan 20 PHP
php数组函数序列之array_search()- 按元素值返回键名
Nov 04 PHP
PHP输出缓存ob系列函数详解
Mar 11 PHP
php的declare控制符和ticks教程(附示例)
Mar 21 PHP
PHP JSON格式的中文显示问题解决方法
Apr 09 PHP
PHP实现全角字符转为半角方法汇总
Jul 09 PHP
php+mysql实现的二级联动菜单效果详解
May 10 PHP
PHP函数引用返回的实例详解
Sep 11 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
Nov 03 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
Jun 06 PHP
PHP htmlentities()函数用法讲解
Feb 25 PHP
PHP的imageTtfText()函数深入详解
Mar 03 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
Linux下ZendOptimizer的安装与配置方法
2007/04/12 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
2016/05/26 PHP
php 根据自增id创建唯一编号类
2017/04/06 PHP
在php的yii2框架中整合hbase库的方法
2018/09/20 PHP
你必须知道的Javascript知识点之&quot;单线程事件驱动&quot;的使用
2013/04/23 Javascript
jQuery实现图片信息的浮动显示实例代码
2013/08/28 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
2013/11/18 Javascript
jquery将一个表单序列化为一个对象的方法
2013/12/02 Javascript
js获取ajax返回值代码
2014/04/30 Javascript
javascript简单实现等比例缩小图片的方法
2016/07/27 Javascript
vue.js入门教程之绑定class和style样式
2016/09/02 Javascript
JS实现简单的tab切换选项卡效果
2016/09/21 Javascript
有关文件上传 非ajax提交 得到后台数据问题
2016/10/12 Javascript
如何在AngularJs中调用第三方插件库
2017/05/21 Javascript
JavaScript实现世界各地时间显示
2020/09/07 Javascript
[50:58]2018DOTA2亚洲邀请赛3月29日 小组赛A组OpTic VS Newbee
2018/03/30 DOTA
Python闭包实现计数器的方法
2015/05/05 Python
Appium Python自动化测试之环境搭建的步骤
2019/01/23 Python
PyCharm下载和安装详细步骤
2019/12/17 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
2020/01/10 Python
Python下划线5种含义代码实例解析
2020/07/10 Python
Python 代码调试技巧示例代码
2020/08/11 Python
Python 3.9的到来到底是意味着什么
2020/10/14 Python
html5标记文字_动力节点Java学院整理
2017/07/11 HTML / CSS
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
某个公司的Java笔面试题
2016/03/11 面试题
夜大毕业生自我鉴定
2013/10/31 职场文书
总经理岗位职责
2013/11/09 职场文书
在教室放鞭炮的检讨书
2014/09/28 职场文书
邀请书格式范文
2015/02/02 职场文书
实习生辞职信范文
2015/03/02 职场文书
2015年营销工作总结范文
2015/04/23 职场文书
学雷锋献爱心活动总结
2015/05/11 职场文书
贫困生证明范文
2015/06/16 职场文书
奠基仪式致辞
2015/07/30 职场文书
导游词之阳朔遇龙河
2019/12/16 职场文书