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的一个登录的类 [推荐]
Mar 16 PHP
PHP网站基础优化方法小结
Sep 29 PHP
基于php实现长连接的方法与注意事项的问题
May 10 PHP
基于php使用memcache存储session的详解
Jun 25 PHP
php Imagick获取图片RGB颜色值
Jul 28 PHP
分享php邮件管理器源码
Jan 06 PHP
joomla数据库操作示例代码
Jan 06 PHP
zend framework重定向方法小结
May 28 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
PHP使用file_get_contents发送http请求功能简单示例
Apr 29 PHP
PHP实现微信退款功能
Oct 02 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 23 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
中东人咖啡哲学
2021/03/03 咖啡文化
一个简单的MySQL数据浏览器
2006/10/09 PHP
一个没有MYSQL数据库支持的简易留言本的编写
2006/10/09 PHP
PHP伪静态页面函数附使用方法
2008/06/20 PHP
在PHP中利用wsdl创建标准webservice的实现代码
2011/12/07 PHP
php和mysql中uft-8中文编码乱码的几种解决办法
2012/04/19 PHP
php源代码安装常见错误与解决办法分享
2013/05/28 PHP
深入研究PHP中的preg_replace和代码执行
2018/08/15 PHP
jquery动态改变form属性提交表单
2014/06/03 Javascript
chrome不支持form.submit的解决方案
2015/04/28 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
2016/06/12 Javascript
jQuery  ready方法实现原理详解
2016/10/19 Javascript
浅谈AngularJs指令之scope属性详解
2016/10/24 Javascript
jQuery插件echarts实现的多折线图效果示例【附demo源码下载】
2017/03/04 Javascript
详谈javascript精度问题与调整
2017/07/08 Javascript
微信小程序多列选择器range-key使用详解
2020/03/30 Javascript
详解vue-video-player使用心得(兼容m3u8)
2019/08/23 Javascript
JS实现百度搜索框关键字推荐
2020/02/17 Javascript
Python 时间处理datetime实例
2008/09/06 Python
Python 文件操作实现代码
2009/10/07 Python
python使用PIL缩放网络图片并保存的方法
2015/04/24 Python
Python3生成手写体数字方法
2018/01/30 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
2018/08/03 Python
详解python列表生成式和列表生成式器区别
2019/03/27 Python
Tensorflow实现在训练好的模型上进行测试
2020/01/20 Python
Python range与enumerate函数区别解析
2020/02/28 Python
Python类super()及私有属性原理解析
2020/06/15 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
PyQt5通过信号实现MVC的示例
2021/02/06 Python
厨房工作人员岗位职责
2013/11/15 职场文书
骨干教师培训方案
2014/05/06 职场文书
2014年教师党员自我评价范文
2014/09/22 职场文书
2015年教研员工作总结
2015/05/26 职场文书
爱国主义电影观后感
2015/06/18 职场文书
聘任合同书
2015/09/21 职场文书
竞选稿之小学班干部
2019/10/31 职场文书