在平常工作开发中,我们通常需要开发出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判断访客是否移动端浏览器访问的四种方法相关推荐

  1. js之删除对象属性的三种方法 判断对象中是否有某一属性的四种方法

    js之删除对象属性的三种方法 & 判断对象中是否有某一属性的四种方法 示例 1.基础版 var a = { id: 18, age: 20, name: "zhangsan" ...

  2. footer属性css,CSS基础-footer元素始终粘在浏览器底部的四种方法

    本文介绍底部footer元素如何始终粘在浏览器底部.当内容container足够多.可以撑开一屏的时候,底部footer紧跟在内容container后边:而内容container不够多.不足以撑开一屏 ...

  3. WordPress 如何判断访客浏览器显示不同内容

    WordPress 如何判断访客浏览器 主题模板适当位置添加调用: <?phpglobal $is_IE;if ($is_IE) {echo '您正在使用不安全的IE浏览器,请使用现代浏览器,浏 ...

  4. PHP判断pc和移动端跳转,JS判断是PC还是移动端浏览器,并根据不同的终端跳转到不同的网址...

    JS判断是PC还是移动端浏览器,并根据不同的终端跳转到不同的网址 function browserRedirect() { var sUserAgent = navigator.userAgent.t ...

  5. 判断是pc还是移动端浏览器

    通过JavaScript判断终端类型 //把请求头信息转为小写 //user agent是指用户代理,使服务器能够识别客户使用的操作系统及版本.CPU 类型.浏览器及版本.浏览器渲染引擎.浏览器语言. ...

  6. html js清除缓存,js清除浏览器缓存的几种方法

    JS 缓存的问题一直都是我们又爱又恨的东西.也是我们比较头痛的问题, 一方面为了提高网站响应速度,减少服务器的负担,和节省带宽,将需要将静态资源缓存在客户端, 但是另一方面,当js 文件有改动的时候, ...

  7. 实现和IE浏览器交互的几种方法

    实现和IE浏览器交互的几种方法       浙江大学计算机系   (310027)       胡朝晖   陈奇   俞瑞钊          如何实现对IE浏览器中对象的操作是一个很有实际意义的问题 ...

  8. ajax请求时清除浏览器缓存,js清除浏览器缓存的几种方法

    JS 缓存的问题一直都是我们又爱又恨的东西.也是我们比较头痛的问题, 一方面为了提高网站响应速度,减少服务器的负担,和节省带宽,将需要将静态资源缓存在客户端, 但是另一方面,当 js 文件有改动的时候 ...

  9. Java 判断字符串是否为空的四种方法、优缺点与注意事项

    以下是Java 判断字符串是否为空的四种方法: 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null ||"".equals(s)); 方法二: ...

  10. 由浅入深CIL系列:5.抛砖引玉:判断string是否为空的四种方法的CIL代码看看效率如何?...

      本节将接触几个新的CIL操作码如下 ldc.i4.0    将整数值 0 作为 int32 推送到计算堆栈上 Ceq         比较两个值.如果这两个值相等,则将整数值 1 (int32) ...

最新文章

  1. 不懂SOLID,GRASP这些软件开发原则!写出来的代码都是垃圾!
  2. 理解正则表达式(程序员第3期文章)
  3. html台风路径,常用气象网站功能简介
  4. Android之内存溢出(Out Of Memory)的总结
  5. jeecg自定义结果集t:dictSelect
  6. python手绘效果图_2020高校邦《马克笔手绘效果图》判断题答案2020高校邦《网络数据采集与Python爬虫(山东大学定制班级)》见面课测试答案...
  7. 最低服务器协议,的WebSocket服务器最低要求
  8. scrapy框架之分布式操作
  9. C++ Programming with TDD之一:GMOCK框架简介
  10. 10月17日云栖精选夜读:什么是新零售?阿里巴巴最新的报告终于说清楚了!(附报告)...
  11. PAIP.在程序中设置壁纸墙纸
  12. CC2530串口通信
  13. html 编辑器 拖动,可视化拖拽页面编辑器 一
  14. smartbi问题_SAP BO的五大尴尬,Smartbi就是HANA用户的“菜”
  15. python中patch的使用
  16. JS中attr和prop区别
  17. 我的世界java版高效率刷怪塔_我的世界超高效率刷怪塔制作教程 砍怪砍到手抽筋...
  18. 我的世界杯 - 诸神黄昏之战
  19. 中了勒索病毒怎么办?怎么预防
  20. matlab模拟土壤水分入渗,基于HYDRUS-3D的涌泉根灌土壤入渗数值模拟

热门文章

  1. 有关sim800l的资料
  2. 软件开发生命周期的五个阶段
  3. 身份证地区码数据表-SqlServer版
  4. js封装ajax方法
  5. 零基础转行网络安全可以做什么工作
  6. 小米10 红米K30Pro 小米10Pro 无限重启卡米 9008救砖后无限重启 线刷无效
  7. win10计算机本地组策略编辑器,win10本地组策略编辑器打不开最佳解决方法
  8. java8.0安装教程_图解JDK8下载安装以及环境配置全过程,超级详细
  9. 3dsMax批量设置可编辑样条线的视口渲染
  10. 前端开发过程中经常遇到的问题以及对应解决方法 (持续更新)