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
关于BIG5-HKSCS的解决方法
Mar 20 PHP
mysql5的sql文件导入到mysql4的方法
Oct 19 PHP
php获取url字符串截取路径的文件名和扩展名的函数
Jan 22 PHP
PHP学习笔记(一) 简单了解PHP
Aug 04 PHP
php支付宝接口用法分析
Jan 04 PHP
PHP之密码加密的几种方式
Jul 29 PHP
CI映射(加载)数据到view层的方法
Mar 28 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
May 19 PHP
PHP制作登录异常ip检测功能的实例代码
Nov 16 PHP
PHP观察者模式原理与简单实现方法示例
Aug 25 PHP
PHP命名空间namespace及use的简单用法分析
Aug 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
使用array mutisort 实现按某字段对数据排序
2013/06/18 PHP
PHP中常用的转义函数
2014/02/28 PHP
常见PHP数据库解决方案分析介绍
2015/09/24 PHP
聊聊 PHP 8 新特性 Attributes
2020/08/19 PHP
用jscript启动sqlserver
2007/06/21 Javascript
用正则表达式 动态创建/增加css style script 兼容IE firefox
2009/03/10 Javascript
ASP.NET中基于JQUERY的高性能的TreeView补充
2011/02/23 Javascript
分享10篇优秀的jQuery幻灯片制作教程及应用案例
2011/04/16 Javascript
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
基于jquery的代码显示区域自动拉长效果
2011/12/07 Javascript
js 剪切板应用clipboardData详细解析
2013/12/17 Javascript
js换图片效果可进行定时操作
2014/06/09 Javascript
jquery不常用方法汇总
2015/07/26 Javascript
Javascript基础回顾之(一) 类型
2017/01/31 Javascript
JavaScript实现无穷滚动加载数据
2017/05/06 Javascript
ES6深入理解之“let”能替代”var“吗?
2017/06/28 Javascript
基于Vue实现微信小程序的图文编辑器
2018/07/25 Javascript
Vue项目实现简单的权限控制管理功能
2019/07/17 Javascript
15分钟上手vue3.0(小结)
2020/05/20 Javascript
Antd表格滚动 宽度自适应 不换行的实例
2020/10/27 Javascript
Python使用pip安装pySerial串口通讯模块
2018/04/20 Python
python多线程之事件Event的使用详解
2018/04/27 Python
PyCharm安装第三方库如Requests的图文教程
2018/05/18 Python
浅谈tensorflow中几个随机函数的用法
2018/07/27 Python
python清除字符串前后空格函数的方法
2018/10/21 Python
Python查找数组中数值和下标相等的元素示例【二分查找】
2019/02/13 Python
python word转pdf代码实例
2019/08/16 Python
为什么是 Python -m
2020/06/19 Python
HTML5自定义元素播放焦点图动画的实现
2019/09/25 HTML / CSS
门诊挂号室室长岗位职责
2013/11/27 职场文书
暑期实践思想汇报
2014/01/06 职场文书
学校门卫管理制度
2014/01/30 职场文书
教师党员自我评价范文
2015/03/04 职场文书
煤矿施工安全协议书
2016/03/22 职场文书
Python深度学习之Pytorch初步使用
2021/05/20 Python
python pandas 解析(读取、写入)CSV 文件的操作方法
2022/12/24 Python