function isMobile() {    // 如果有HTTP_X_WAP_PROFILE则一定是移动设备    if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])) {    return true;    }    //如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息    if (isset ($_SERVER['HTTP_VIA'])) {    //找不到为flase,否则为true    return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;    }    //判断手机发送的客户端标志,兼容性有待提高    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;    }}    //协议法,因为有可能不准确,放到最后判断    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;    }    }    return false;
}echo isMobile();

乌徒帮发布的wordpress手机版和wordpress主程序相互呼应,不过否子戈想实现当用户用手机访问主站的时候出现进入手机版的提示,虽然可以通过CSS或javascript来实现,然而经过尝试,都不完美。为此,我专门查阅了一些资料,自己建立了一个php判断是否为手机浏览器的函数,用来实现上述目标。

我们通过对浏览器的USER_AGENT来判断用户是否在使用手机浏览器。

USER_AGENT是php用来接收用户访问设备的参数,通过用户访问网站时传送的数据实现。在php用,用echo $_SERVER['HTTP_USER_AGENT']来打印和查看用户的设备(设备使用者才能看到)。而对于程序猿,则利用这个数据判断来访用户所使用的浏览器信息。我们建立以下的php函数:

function is_mobile(){
$user_agent = $_SERVER['HTTP_USER_AGENT'];
if(trim($user_agent) == '')return true;//如果客户端信息为空,我们也认为该设备为手机设备
$mobile_agents = Array("240x320","acer","acoon","acs-","abacho","ahong","airness","alcatel","amoi","android","anywhereyougo.com","applewebkit/525","applewebkit/532","asus","audio","au-mic","avantogo","becker","benq","bilbo","bird","blackberry","blazer","bleu","cdm-","compal","coolpad","danger","dbtel","dopod","elaine","eric","etouch","fly","fly_","fly-","go.web","goodaccess","gradiente","grundig","haier","hedy","hitachi","htc","huawei","hutchison","inno","ipad","ipaq","ipod","jbrowser","kddi","kgt","kwc","lenovo","lg","lg2","lg3","lg4","lg5","lg7","lg8","lg9","lg-","lge-","lge9","longcos","maemo","mercator","meridian","micromax","midp","mini","mitsu","mmm","mmp","mobi","mot-","moto","nec-","netfront","newgen","nexian","nf-browser","nintendo","nitro","nokia","nook","novarra","obigo","palm","panasonic","pantech","philips","phone","pg-","playstation","pocket","pt-","qc-","qtek","rover","sagem","sama","samu","sanyo","samsung","sch-","scooter","sec-","sendo","sgh-","sharp","siemens","sie-","softbank","sony","spice","sprint","spv","symbian","tablet","talkabout","tcl-","teleca","telit","tianyu","tim-","toshiba","tsm","up.browser","utec","utstar","verykool","virgin","vk-","voda","voxtel","vx","wap","wellco","wig browser","wii","windows ce","wireless","xda","xde","zte",'Opera Mini','Kindle','Silk/','Mobile','baidu Transcoder');
$is_mobile = false;
foreach($mobile_agents as $device){
if(stristr($user_agent,$device) !== FALSE){
$is_mobile = true;
break;
}
}
return $is_mobile;
}

使用时,只需要用if(is_mobile())进行判断即可,乌徒帮通过这种方法,实现了让顶部的导航在手机浏览时消失,换为适合手机浏览的小导航,不信你可以用手机访问http://www.utubon.com试试看(触屏智能手机效果更佳哦!)。

在这个函数中,我们通过对比我们已经计划好的一些关键字,和$_SERVER['HTTP_USER_AGENT']进行匹配,如果$_SERVER['HTTP_USER_AGENT']中包含了我们给出的一些关键字中的一个,我们就判定用户在使用手机浏览器访问网站。我们要做的就是搜集这些特殊的关键字,它们是确定用户是否为手机浏览用户的唯一标识。

在函数的开头我们有一句if(trim($user_agent) == '')return true;$_SERVER['HTTP_USER_AGENT']为空的话,我们也断定用户在使用手机浏览器,原因是用户如果用桌面版的浏览器访问网站,一般都会有足够的$_SERVER['HTTP_USER_AGENT']信息,而我在阅读一些资料时,有人提到,中国移动会过滤掉$_SERVER['HTTP_USER_AGENT'],因此网站php程序不会接收到$_SERVER['HTTP_USER_AGENT']信息。

为了在PC浏览器上模拟不同的USER_AGENT,我们可以为Chrome或Firefox装上一些插件,如USER AGENT switcher等,可以设置为一些手机设备,让浏览器的USER_AGENT变为手机设备,从而模拟手机访问网站。

转载于:https://www.cnblogs.com/goldenstones/p/4873799.html

php 判断是手机版还是电脑端相关推荐

  1. php 判断手机和电脑,php 判断是手机版还是电脑端

    /** *判断是否是通过手机访问 * */ function isMobile() { // 如果有HTTP_X_WAP_PROFILE则一定是移动设备 if (isset ($_SERVER['HT ...

  2. 实现手机版和电脑端显示不同的广告代码

    简介: 如何放入手机和电脑端显示不同的广告代码,这里完美来分享一下pc移动分离代码教程吧: 记得先备份网站数据养成良好的站长习惯,在网站后台→模板→列表模板(内容模板)等→修改,也可以在宝塔的后台直接 ...

  3. Axure企业官网通用模板web端+公司官网通用模板web端高保真原型+服务企业门户官网+加入我们+在线招聘+企业宣传+新闻动态+企业理念+产品与服务+公司通用版官方电脑端门户网站

    作品介绍:Axure企业官网通用模板web端+公司官网通用模板web端高保真原型+服务企业门户官网+加入我们+在线招聘+企业宣传+新闻动态+企业理念+产品与服务+公司通用版官方电脑端门户网站 原型演示 ...

  4. 奥特曼传奇英雄存档丢了怎么找回_热血传奇复古传奇:传奇游戏手机版竟然比端游还火爆?你觉得呢?...

    哈喽大家好又到了我给大家分享传奇资讯啦,传奇可算是给我们八零后留下深刻的印象和回忆,随着时代的不断发展,玩传奇的硬件也是不断更新换代.从最开始的大屁股机,到后面的笔记本,再到现在的手机,可以说硬件是越 ...

  5. 自动跳转手机版和电脑版html代码,分享两个手机访问pc网站自动跳转手机端网站代码...

    4G降临,移动网站已经一发不可收拾,pc端和移动端官网并存.如何让别人访问你的pc端的官网直接跳转到移动端的网站呢?各位看官,小二上代码!来了! 常用的访问pc自动跳转到移动页面的代码 (functi ...

  6. IOS版aplayer使用教程_Y Y的使用教程视频版/图片版(手机版。电脑版。楚恒上课必用软件)...

    手机版YY使用教程文字版 第一步:下载YY这个软件. 下载YY.是英文字母YY.不是汉字丫丫.苹果手机在APP Store.其他手机在相应的应用商店.没有的.下载360手机助手.在360手机助手里下载 ...

  7. 智能混剪系统爆款生成器移动端-----H5手机版(小程序端)

    智能混剪系统爆款生成器移动端手机版 ------  开发剪辑软件类工具(行业模板化操作) //整理@用户功能         $at_users   = [];         if (!empty( ...

  8. 手机群控,电脑端控制,鼠标键盘操控手机

    苹果群控 同步器 手机群控系统相信大家都不会陌生,从之前苹果越狱才可以实现手机群控,到今天的苹果手机免越狱群控,那么苹果免越狱群控系统它又是如何操作的. 苹果免越狱中控操作界面 技术原理: 苹果免越狱 ...

  9. app手机端连接tomcat电脑端服务器

    1.你要在电脑端开启并启动tomcat 2.启动nginx,然后需要在nginx中配置好端口号,每一个app的模块端口号是不一样的,需要你进行更改 3.如下图代表app连接的端口: 4.关于sql过滤 ...

最新文章

  1. TensorRT和PyTorch模型的故事
  2. Nat. Med.:iHMP之“微生物组与早产”
  3. 烧脑:宇宙时空结构是量子纠错码
  4. php mysql 检索跳转_jQuery+AJAX+PHP+MySQL数据库开发搜索功能,无跳转无刷新搜索。...
  5. python获取数组中大于某一阈值的那些索引值_使用Python+OpenCV进行实时车道检测...
  6. 怎么判断日出时间早晚_云南8日游攻略以及费用,从西安到云南旅游怎么安排行程?...
  7. ASP.NET跨页传值方法汇总
  8. Android应用安装apk版本升级,适配Android 8.0和Android 10.0下载安装,shell命令安装APK
  9. ef生成mysql字段注释_EFcore+MySql 数据迁移的时候,怎么给表结构加注释?
  10. jenkins部署流程图_一文教你使用 Jenkins 设计多环境、多项目持续集成环境!
  11. JS实现新打开网页最大化or全屏显示
  12. Vim编辑器常用命令汇总
  13. 局域网文件服务器带宽,高带宽局域网
  14. 红外遥控切歌(好运来/天空之城)、红外模块的应用
  15. 使用电脑过程中突然无法复制粘贴了
  16. C语言及程序设计 套餐 课程主页
  17. JavaBean的书写规范
  18. 请求与通配符 mime 映射相匹配。请求映射到静态文件处理程序。如果有不同的前提条件,请求将映射到另一个处理程序。...
  19. python实现证件照更换背景颜色
  20. Jmeter录制脚本(二)-----使用代理录制web脚本

热门文章

  1. android palette组件用法,Android Material Design:使用Palette优化界面色彩搭配。
  2. python 实例方法和类方法的区别_实例方法和类方法的区别 python
  3. Hexo博客搭建之在文章中插入图片
  4. 《图解HTTP》全书内容表述
  5. [QQAI机器人]-使用Java开发环境搭建
  6. Blind SQL injection:盲注详解
  7. java模拟登陆教务系统_Java模拟登录高校教务系统
  8. 山西评计算机高级职称,山西省高级职称评审通知
  9. 中科大计算机对比重庆大学,985工程院校实力排名:中科大仅排第16名?看看你喜欢哪所...
  10. oracle数据库常见故障及灾难情况分析