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. 怎样在计算机上插入机构图,Win7系统如何在excel中添加word文档结构图?
  2. snakeyaml读取yaml/yml配置文件数据
  3. 一个查看 SAP UI5 控件所有公有方法的小技巧
  4. node.js JS对象和JSON字符串之间的转换
  5. 什么是大数据「实时流计算」?深度解析它的4大应用及4个特点
  6. Java 使用Commons-fileupload组件实现上传
  7. python基础 网络编程
  8. 悟空CRM测试用例执行,项目评审
  9. 《如何有效阅读一本书-超实用笔记读书法》
  10. codeforces 999 C. Alphabetic Removals(1200)
  11. TypeScript--适合小白吧(应该)
  12. 网络技术故障背后:50元发动的DDoS流量攻击
  13. Android轻松实现高效的启动页
  14. iOS-微信朋友圈图片压缩算法
  15. ChatGPT初体验——开发好帮手
  16. 【蓝桥杯】《试题 基础练习 特殊回文数》详解
  17. mac使用my-mind思维导图
  18. 最长公共子序列(LCS)的C++实现
  19. 民非企业盈利怎么处理_民办非企业可以盈利吗
  20. linux启动网络服务的命令,linux重启服务命令

热门文章

  1. MySQL45讲(第11-15讲)
  2. Android Studio基于数组适配器使用列表视图案例 —— 阅读古诗
  3. 算法设计与分析(屈婉玲)网络课学习笔记(一)
  4. 我的Fedroa15安装过程问题总结
  5. Elasticsearch 自定义分词同义词环节的这个细节不大好理解......
  6. Android音乐播放器 -- UI 代码构现
  7. 错误记录:MIME type may not contain reserved characters
  8. CV牛人牛事简介之一
  9. 【小黑JavaScript入门系列之脑力训练一《假设从A地到B地的火车票有硬座和硬卧……》】
  10. java中获取邮箱的前缀,java – 如何从iso获取国家电话前缀