问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

php判断客户端是pc还是手机

发布网友 发布时间:2022-04-06 02:58

我来回答

1个回答

热心网友 时间:2022-04-06 04:27

网上现在有三种观点, 一种是基于浏览器发送的 User-Agent, 但明显这种方法是行不通的, 虽然有人列出了大多数的手机发送的User-Agent, 但依然会有很多手机无法识别, 甚至有些手机浏览器不发送User-Agent, 而且也不能保证以后就不会出新牌子. 下面是一个php的例子, 看过之后你就会知道有多么不可靠. 1. function is_wap(){ 2. $ua = strtolower($_SERVER['HTTP_USER_AGENT']); 3. $uachar = "/(nokiasonyericssonmotsamsungsghlgsiephilipspanasonicalcatellenovocldcmidpwapmobile)/i"; 4. if(($ua == '' preg_match($uachar, $ua))&& !strpos(strtolower($_SERVER['REQUEST_URI']),'wap')){ 5. return true; 6. }else{ 7. return false; 8. } 9. } 另外一种是判断HTTP_ACCEPT, 这种应该相对可靠一点, 不过HTTP_ACCEPT是非常复杂的, 如果一般的不支持html的浏览器还好说, 你只要判断浏览器支持wml并且不支持html就可以, 但如果浏览器同时支持wml和html那就难办了, 低端手机可能会将wml放到html的前面, 但是很多高端手机或者智能手机对html的支持很好, 所以html也会出现在wml前面. 这是黑莓手机发送的HTTP_ACCEPT application/vnd.rim.html, text/html, application/vnd.wap.xhtml+xml, text/vnd.sun.j2me.app-descriptor, image/vnd.rim.png,image/jpeg, application/x-vnd.rim.pme.b, application/vnd.rim.ucs, image/gif;anim=1, application/vnd.rim.jscriptc;v=0-8-8, application/x-javascript, application/vnd.rim.css;v=1, text/css;media=handheld, application/vnd.wap.wmlc;q=0.9, application/vnd.wap.wmlscriptc;q=0.7, text/vnd.wap.wml;q=0.7, */*;q=0.5 夸张吧? 不过的确是很标准的, 开发人员可以根据这个得到很多信息, 但很多手机都没这么标准的, 如果你查看IE或者FF的HTTP_ACCEPT你会发现它很短. text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8 同样, 给你个php的例子. if (isset($_SERVER['HTTP_ACCEPT']) && (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')) )) {//手机访问 readfile('index.wml'); } else readfile('index.htm'); 原理:如果浏览器支持WML、而且[不支持HTML]或[WML优先于HTML],则判定为手机。但实际上这个原理是不正确的. 还有一种是说判断网关或者IP什么的, 但我个人认为这个很不可靠, 手机的联网方式很多, 比如我开发的时候就是用模拟器的.这个应该不用什么例子了, REMOTE_ADDR 就足够了. 以上是我今天上午的工作成果, 但实际上还是没有找到完美的解决方案, 先写这么多, 有问题请补充或者发送消息给我, 如果你有更好的办法希望可以分享给我, 谢谢.
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 服务器如何识别你是用电脑还是手机上的他们的网站? PHP如何判断手机访问还是电脑访问,我要一个判断获得两个值,如果手机访问,那么是$visit=sh PHP判断用户在移动端访问还是桌面端访问的代码 请问:php如何判断用户是使用pc电脑浏览网页 还是移动设备来浏览网页呢? php 怎么将二进制流转换为base64编码 用php在IE6中怎样显示编码为base64的图片? php amr怎么转换成base64 码 image/png;base64 用php怎么解析 如何将图片转换为base64数据流 php 图片用base64转码完的文本比以前还大 是为什么? 如何将本地图片转成base64 php 如何base64编码的图片 php 图片流 转 base64 PHP 如何把图片转成 BASE64 编码 php httpclient 超时怎么办 php怎么获取服务器脚本超时时间 php的fsockopen能设置超时时间吗 php中mysqli连接超时时间如何设置 如何修改IIS中的ASP脚本和PHP脚本超时时间 php soap 如何设置超时? php 判断是手机版还是电脑端 php怎么判断是不是苹果手机浏览器 403 Forbidden是什么意思?怎么解决? 打开游戏显示&quot;403Forbidden&quot;是啥意思? 403 Forbidden是什么意思,怎么解决这个问题? 403 Forbidden 是什么意思?怎么解决? 我登陆网站提示 “403 Forbidden”是什么意思? 在上网时,IE提示错误信息 403 Forbidden ,它表示什么含义? 网站出现403 Forbidden错误的原因以及怎么解决的方法 错误403 forbidden什么意思? 关于“403Forbidden”怎么回事? 我点“h!&quot;出现“403 - Forbidden”,什么意思? 403 forbidden 出现这个问题怎么办??具体怎么解决??求大神帮助 后台为什么总出现403 Forbidden,多谢解答 1.1 403 Forbidden是怎么回事 频繁出现“403 Forbidden”怎么回事? 为什么steam更新特别慢 加快STEAM网速问题 steam更新无限变大且更新速度超慢怎么解决? steam平台更新不了了,总出现这个!!