前一段时间发布了一个判断搜索引擎Robot的函数 is_robot() ,而最近又发布了一个Go2Wap插件,用于手机访客访问WP时自动转跳到 /wap/ 页面,这个插件发布后,有朋友就向我报告一些Bug,这里结合我遇到的问题综合讲解一下。
先看一下这个判断函数:
- function is_wap(){
- $ua = strtolower($_SERVER['HTTP_USER_AGENT']);
- $uachar = "/(nokia|sony|ericsson|mot|samsung|sgh|lg|sie|philips|panasonic|alcatel|lenovo|cldc|midp|wap|mobile)/i";
- if(($ua == '' || preg_match($uachar, $ua))&& !strpos(strtolower($_SERVER['REQUEST_URI']),'wap')){//如果在访问的URL中已经找到 wap字样,表明已经在访问WAP页面,无需跳转,下一版本增加 feed访问时也不跳转
- return true;
- }else{
- return false;
- }
- }
这个函数跟上次发布的is_robot()函数基本类似,$uachar里面的是各种手机常见的USER_AGENT:
- nokia 诺基亚
- sony,ericsson 索尼爱立信,爱立信
- mot 摩托罗拉
- samsung,sgh 三星
- lg LG
- sie 西门子
- philips 飞利浦
- panasonic 松下
- alcatel 阿尔卡特
- lenovo 联想
- cldc,midp,wap,mobile 这主要针对国内一些MTK平台及早期的手机,这些手机支持CLDC和MIDP,WAP1.1/WAP2.0标准等,故可以认定为手机访客
由于我的水平有限,还没有搞定一些Windows Mobile及其他一些智能手机的USER_AGENT,但国内的主流还是诺基亚,索爱,摩托,三星等,个人觉得上面的这些关键字已经能判断 95%以上的手机了。
您肯定会对$ua == ”产生疑问,为什么USER_AGENT为空也算手机访问?这也是符合咱们特殊国情的,而且,整个插件起作用的也许恰恰就是这一句。当手机用户通过移动梦网访问网站时,中国移动出于某些经济利益的因素,会自动过滤掉访问非SP网站的USER_AGENT,也就是手机用户访问移动梦网首页,收费铃声下载等网页时会提交USER_AGENT,而访问其他网站时,USER_AGENT却是空的。不信您使用Firefox,装上User Agent Switcher,调一个空的USER_AGENT访问 www.google.cn 试试,同样也是转跳到Google的WAP页面,至于联通,我没试过,不过有网友反应也是同样的状况。
另有朋友反应”firefox下用的好好的,可是用IE浏览就自动跳的wap里面了,有人用遨游浏览时也告诉我会自动跳转“,由于他也没有贴出具体的USER_AGENT,我恳请所有遇到BUG的先向我报告一下您的USER_AGENT,如何报告?您只需做一个简单的动作:访问 http://photozero.net/ua.php 我会在数据库记录您的USER_AGENT(仅记录USER_AGENT,不记录其他IP之类的信息,隐私权我负)
在综合分析大家的数据后,我会做出改进,也恳请大家提出意见建议,谢谢。
*ps 本站所有原创、改编的PHP、JS等代码,您均可以自由使用于其他Wordpress插件,或其他任何PHP程序,转换成ASP,JSP也可以,请保留出处,谢谢!
页面错位啦~
哈哈~有人和我说过这个问题~
这个插件我还没研究过~~
黑莓的呢…
暂时不支持。。黑莓国内少人用呢。。
不过将来很快就支持了
现在上不去网,只能用手机回复,能告诉我你的邮箱吗?我写了个例子你看怎么样。
直接给我回邮件吧。
zero[AT]photozero[DOT]net
不错不错零号相册» Blog Archive » PHP判断手机(cellphone,mobile,wap)访问函数
这个方法不太好,不够灵活