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 相关文章推荐
WML,Apache,和 PHP 的介绍
Oct 09 PHP
PHP函数学习之PHP函数点评
Jul 05 PHP
PHP+iFrame实现页面无需刷新的异步文件上传
Sep 16 PHP
php递归删除目录与文件的方法
Jan 30 PHP
PHP动态输出JavaScript代码实例
Feb 12 PHP
php实现TCP端口检测的方法
Apr 01 PHP
php5.4传引用时报错问题分析
Jan 22 PHP
Zend Framework入门知识点小结
Mar 19 PHP
PHP开发制作一个简单的活动日程表Calendar
Jun 20 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
Sep 21 PHP
使用PHP反射机制来构造&quot;CREATE TABLE&quot;的sql语句
Mar 21 PHP
laravel ajax curd 搜索登录判断功能的实现
Apr 17 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中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
2011/05/04 PHP
php中将一个对象保存到Session中的方法
2015/03/13 PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
2017/06/07 PHP
PHP 对象继承原理与简单用法示例
2020/04/21 PHP
jQuery(1.3.2) 7行代码搞定跟随屏幕滚动的层
2009/05/21 Javascript
flexigrid 参数说明
2010/11/23 Javascript
基于jQuery的一个扩展form序列化到json对象
2010/12/09 Javascript
让人印象深刻的10个jQuery手风琴效果应用
2012/05/08 Javascript
JavaScript基本的输出和嵌入式写法教程
2015/10/20 Javascript
js如何判断是否在iframe中及防止网页被别站用iframe嵌套
2017/01/11 Javascript
Vue2.x中的Render函数详解
2017/05/30 Javascript
详解vue中axios的封装
2018/07/18 Javascript
基于vue2.0的活动倒计时组件countdown(附源码下载)
2018/10/09 Javascript
vant IndexBar实现的城市列表的示例代码
2019/11/20 Javascript
Vue 解决路由过渡动画抖动问题(实例详解)
2020/01/05 Javascript
JS实现transform实现扇子效果
2020/01/17 Javascript
从零学Python之引用和类属性的初步理解
2014/05/15 Python
python小技巧之批量抓取美女图片
2014/06/06 Python
python文件写入实例分析
2015/04/08 Python
Python实现的弹球小游戏示例
2017/08/01 Python
centos6.8安装python3.7无法import _ssl的解决方法
2018/09/17 Python
python3通过selenium爬虫获取到dj商品的实例代码
2019/04/25 Python
python 两个数据库postgresql对比
2019/10/21 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
2019/10/24 Python
Django视图扩展类知识点详解
2019/10/25 Python
Pytorch在NLP中的简单应用详解
2020/01/08 Python
Python基于pyjnius库实现访问java类
2020/07/31 Python
Raleigh兰令自行车美国官网:英国凤头牌自行车
2018/01/08 全球购物
英国手机壳购买网站:Case Hut
2019/04/11 全球购物
绝对经典成功的大学生推荐信
2013/11/08 职场文书
后勤岗位职责
2013/11/26 职场文书
信息与计算科学专业推荐信
2014/02/23 职场文书
司法所长先进事迹
2014/06/02 职场文书
tp5使用layui实现多个图片上传(带附件选择)的方法实例
2021/11/17 PHP
MySQL高级进阶sql语句总结大全
2022/03/16 MySQL
PostgreSQL怎么创建分区表详解
2022/06/25 PostgreSQL