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调用三种数据库的方法(2)
Oct 09 PHP
基于mysql的bbs设计(二)
Oct 09 PHP
php简单封装了一些常用JS操作
Feb 25 PHP
用PHP的超级变量$_GET获取HTML表单(Form) 数据
May 07 PHP
一个PHP缓存类代码(附详细说明)
Jun 09 PHP
php下载文件的代码示例
Jun 29 PHP
PHP中ini_set和ini_get函数的用法小结
Feb 18 PHP
php实现图片局部打马赛克的方法
Feb 11 PHP
PHP使用ODBC连接数据库的方法
Jul 18 PHP
PHP下载文件的函数实例代码
May 18 PHP
老生常谈PHP 文件写入和读取(必看篇)
May 22 PHP
PHP正则表达式函数preg_replace用法实例分析
Jun 04 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导出MySQL数据到Excel文件(fputcsv)
2011/07/03 PHP
PHP5中实现多态的两种方法实例分享
2014/04/21 PHP
php 解决substr()截取中文字符乱码问题
2016/07/18 PHP
Laravel4中的Validator验证扩展用法详解
2016/07/26 PHP
PHP实现将标点符号正则替换为空格的方法
2017/08/09 PHP
以JSON形式将JS中Array对象数组传至后台的方法
2014/01/06 Javascript
js生成动态表格并为每个单元格添加单击事件的方法
2014/04/14 Javascript
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
2014/05/05 Javascript
jQuery中:image选择器用法实例
2015/01/03 Javascript
jquery实现平滑的二级下拉菜单效果
2015/08/26 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
2015/10/01 Javascript
浅析Javascript匿名函数与自执行函数
2016/02/06 Javascript
js自定义弹框插件的封装
2020/08/24 Javascript
Vue 全家桶实现移动端酷狗音乐功能
2018/11/16 Javascript
Vue.js项目实战之多语种网站的功能实现(租车)
2019/08/07 Javascript
15 分钟掌握vue-next响应式原理
2019/10/13 Javascript
解决Vue打包上线之后部分CSS不生效的问题
2019/11/12 Javascript
Node.js控制台彩色输出的方法与原理实例详解
2019/12/01 Javascript
[50:48]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python简单实现计算过期时间的方法
2015/06/09 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
python实现从pdf文件中提取文本,并自动翻译的方法
2018/11/28 Python
Python lxml解析HTML并用xpath获取元素的方法
2019/01/02 Python
pygame实现俄罗斯方块游戏(对战篇1)
2019/10/29 Python
将数据集制作成VOC数据集格式的实例
2020/02/17 Python
美国女性服饰销售网站:Nasty Gal(坏女孩)
2016/07/26 全球购物
全球最大的在线旅游公司:Expedia
2017/11/16 全球购物
个人评价范文分享
2014/01/11 职场文书
运输服务质量承诺书
2014/03/27 职场文书
药店促销活动策划方案
2014/08/24 职场文书
2014年话务员工作总结
2014/11/19 职场文书
简短清晨问候语
2015/11/10 职场文书
门面租赁合同范文
2019/08/06 职场文书
Vue自定义铃声提示音组件的实现
2022/01/22 Vue.js
深入理解go缓存库freecache的使用
2022/02/15 Golang
面试提问mysql一张表到底能存多少数据
2022/03/13 MySQL