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初学入门
Nov 19 PHP
php 验证码制作(网树注释思想)
Jul 20 PHP
PHP 第二节 数据类型之数值型
Apr 28 PHP
php插入中文到sqlserver 2008里出现乱码的解决办法分享
Jul 19 PHP
php图片的裁剪与缩放生成符合需求的缩略图
Jan 11 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
Nov 12 PHP
浅析php原型模式
Nov 25 PHP
php从数组中随机选择若干不重复元素的方法
Mar 14 PHP
php比较两个字符串长度的方法
Jul 13 PHP
PHP保存session到memcache服务器的方法
Jan 19 PHP
yii2使用gridView实现下拉列表筛选数据
Apr 10 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
Sep 26 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读取excel文件示例分享(更新修改excel)
2014/02/27 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
2016/05/11 PHP
js 覆盖和重载 函数
2009/09/25 Javascript
浏览器加载、渲染和解析过程黑箱简析
2012/11/29 Javascript
让ie6也支持websocket采用flash封装实现
2013/02/18 Javascript
实现网页页面跳转的几种方法(meta标签、js实现、php实现)
2014/05/20 Javascript
鼠标事件的screenY,pageY,clientY,layerY,offsetY属性详解
2015/03/12 Javascript
input输入框鼠标焦点提示信息
2015/03/17 Javascript
JavaScript给url网址进行encode编码的方法
2015/03/18 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
2015/12/01 Javascript
jQuery移动web开发之页面跳转和加载外部页面的实现
2015/12/04 Javascript
微信小程序中子页面向父页面传值实例详解
2017/03/20 Javascript
如何在项目中使用log4.js的方法步骤
2019/07/16 Javascript
JavaScript数组排序小程序实现解析
2020/01/13 Javascript
微信小程序订阅消息(java后端实现)开发
2020/06/01 Javascript
VUE中setTimeout和setInterval自动销毁案例
2020/09/07 Javascript
Python中还原JavaScript的escape函数编码后字符串的方法
2014/08/22 Python
Python编程中归并排序算法的实现步骤详解
2016/05/04 Python
python环境路径配置以及命令行运行脚本
2019/04/02 Python
Python实现EXCEL表格的排序功能示例
2019/06/25 Python
Python求正态分布曲线下面积实例
2019/11/20 Python
Python爬虫实现自动登录、签到功能的代码
2020/08/20 Python
详解canvas drawImage()方法绘制图片不显示的问题
2018/10/08 HTML / CSS
全球知名的婚恋交友网站:Match.com
2017/01/05 全球购物
世界上最大的专业美容用品零售商:Sally Beauty
2017/07/02 全球购物
集世界奢侈品和设计师品牌的意大利精品买手店:Tessabit
2019/08/17 全球购物
水果连锁超市创业计划书
2014/01/24 职场文书
迟到早退检讨书
2014/02/10 职场文书
运动会稿件50字
2014/02/17 职场文书
幼儿园小班教师寄语
2014/04/03 职场文书
家长通知书教师评语
2014/04/17 职场文书
王兆力在市委党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
学校领导班子成员查摆问题及整改措施
2014/10/28 职场文书
违反学校规则制度检讨书
2015/01/01 职场文书
幼儿园小班个人工作总结
2015/02/12 职场文书
SpringBoot使用ip2region获取地理位置信息的方法
2022/06/21 Java/Android