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 相关文章推荐
判断Keep-Alive模式的HTTP请求的结束的实现代码
Aug 06 PHP
php在项目中寻找代码的坏味道(综艺命名)
Jul 19 PHP
php中将html中的br换行符转换为文本输入中的换行符
Mar 26 PHP
Yii中创建自己的Widget实例
Jan 05 PHP
PHP 极验验证码实例讲解
Sep 29 PHP
php 实现Hash表功能实例详解
Nov 29 PHP
PHP未登录自动跳转到登录页面
Dec 21 PHP
数组任意位置插入元素,删除特定元素的实例
Mar 02 PHP
Thinkphp结合ajaxFileUpload实现异步图片传输示例
Mar 13 PHP
thinkPHP中钩子的使用方法实例分析
Nov 16 PHP
php写入txt乱码的解决方法
Sep 17 PHP
php判断数组是否为空的实例方法
May 10 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配置心得包含MYSQL5乱码解决
2006/11/20 PHP
PHP setTime 设置当前时间的代码
2012/08/27 PHP
php数组索引的Key加引号和不加引号的区别
2014/08/19 PHP
php将图片文件转换成二进制输出的方法
2015/06/10 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
2015/12/21 PHP
ThinkPHP3.2框架操作Redis的方法分析
2019/05/05 PHP
编写兼容IE和FireFox的脚本
2009/05/18 Javascript
javascript通过className来获取元素的简单示例代码
2014/01/10 Javascript
如何用javascript计算文本框还能输入多少个字符
2015/07/29 Javascript
js和jquery实现监听键盘事件示例代码
2020/06/24 Javascript
浅谈JavaScript 浏览器对象
2016/06/03 Javascript
node-http-proxy修改响应结果实例代码
2016/06/06 Javascript
JavaScript实现打地鼠小游戏
2020/04/23 Javascript
微信小程序上滑加载下拉刷新(onscrollLower)分批加载数据(二)
2017/05/11 Javascript
微信小程序项目总结之点赞 删除列表 分享功能
2018/06/25 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
2018/07/25 Javascript
Vue项目实现换肤功能的一种方案分析
2019/08/28 Javascript
jQuery实现简单QQ聊天框
2020/08/27 jQuery
vue data有值,但是页面{{}} 取不到值的解决
2020/11/09 Javascript
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
python pyheatmap包绘制热力图
2018/11/09 Python
python查询文件夹下excel的sheet名代码实例
2019/04/02 Python
Pandas之MultiIndex对象的示例详解
2019/06/25 Python
python elasticsearch从创建索引到写入数据的全过程
2019/08/04 Python
Python的Lambda函数用法详解
2019/09/03 Python
tensorflow常用函数API介绍
2020/04/19 Python
通过案例解析python鸭子类型相关原理
2020/10/10 Python
个人简历自我鉴定
2013/10/11 职场文书
质检部经理岗位职责
2014/02/19 职场文书
质量承诺书格式
2014/05/20 职场文书
教师四风对照检查材料思想汇报
2014/09/17 职场文书
地方白酒代理协议书
2014/10/25 职场文书
2015年教师节贺卡寄语
2015/03/24 职场文书
教师学习中国梦心得体会
2016/01/05 职场文书
关于springboot配置druid数据源不生效问题(踩坑记)
2021/09/25 Java/Android
HTML怎么设置下划线?html文字加下划线方法
2021/12/06 HTML / CSS