上一周,由于不知名的主机问题,衡天客服蓝冰热心地帮我换了台主机,也不知道为什么,有几位老用户留言纷纷反映样式有问题,tiandi只得留言问是什么浏览器访问的,自己也觉得有点麻烦。tiandi也不止一次地看到有些朋友的博客评论处有IP来源国家,浏览器信息以及操作系统信息了,索性动动手,小改一下代码,也在评论处显示评论者的浏览器及版本信息吧,其他两个似乎没有什么用的样子,暂时不加了。
实现原理很简单,在评论者发表评论时,记录评论者的UA信息,然后根据UA信息,获取用户使用何种浏览器以及浏览器版本信息,最终将这些数据返回输出到页面中。起先,tiandi以为需要先做记录评论者UA信息的功能,结果意外的在数据库里发现了,Wordpress其实已经做了这间事了。
那就简单多了,直接从数据库从取得该字段信息,然后判定浏览器以及浏览器版本即可。正好之前做蜘蛛爬行采集的时候,已经有做过getbrowser()的功能,直接拿来用,将下面代码放入function.php中。
function getbrowser($Agent) { if ($Agent == "") $Agent = $_SERVER['HTTP_USER_AGENT']; $browser = ''; $browserver = ''; if(ereg('Mozilla', $Agent) && ereg('Chrome', $Agent)) { $temp = explode('(', $Agent); $Part = $temp[2]; $temp = explode('/', $Part); $browserver = $temp[1]; $temp = explode(' ', $browserver); $browserver = $temp[0]; $browser = 'Chrome'; } if(ereg('Mozilla', $Agent) && ereg('Firefox', $Agent)) { $temp = explode('(', $Agent); $Part = $temp[1]; $temp = explode('/', $Part); $browserver = $temp[2]; $temp = explode(' ', $browserver); $browserver = $temp[0]; $browser = 'Firefox'; } if(ereg('Mozilla', $Agent) && ereg('Opera', $Agent)) { $temp = explode('(', $Agent); $Part = $temp[1]; $temp = explode(')', $Part); $browserver = $temp[1]; $temp = explode(' ', $browserver); $browserver = $temp[2]; $browser = 'Opera'; } if(ereg('Mozilla', $Agent) && ereg('UCBrowser', $Agent)) { $temp = strrchr($Agent,'/'); $browserver = substr($temp,1); $browser = 'UC'; } if(ereg('Mozilla', $Agent) && ereg('MSIE', $Agent)) { $temp = explode('(', $Agent); $Part = $temp[1]; $temp = explode(';', $Part); $Part = $temp[1]; $temp = explode(' ', $Part); $browserver = $temp[2]; $browser = 'Internet Explorer'; } //其余浏览器按需自己增加 if($browser != '') { $browseinfo = $browser.' '.$browserver; } else { $browseinfo = $Agent; } return $browseinfo; }
上面的getbrowser()函数返回的是浏览器名字+浏览器版本。在相关位置调用,让其显示出来即可。最后,打开wordpress下的wp-includes/comment-template,查找function get_comment_author_link函数,在最后一个return之前加入调用函数,以及显示对应小图标功能。
if($comment) $ua = $comment->comment_agent; else $ua = ""; $tmp = getbrowser($ua); if($tmp != "") { $br = explode(' ',$tmp); if(stristr($br[0],'chrome')) $brimg = "http://www.tiandiyoyo.com/wp-content/themes/freshblog/images/browser/chrome.png"; elseif(stristr($br[0],'firefox')) $brimg = "http://www.tiandiyoyo.com/wp-content/themes/freshblog/images/browser/firefox.png"; elseif(stristr($br[0],'opera')) $brimg = "http://www.tiandiyoyo.com/wp-content/themes/freshblog/images/browser/opera.png"; elseif(stristr($br[0],'internet')) $brimg = "http://www.tiandiyoyo.com/wp-content/themes/freshblog/images/browser/ie.png"; elseif(stristr($br[0],'Safari')) $brimg = "http://www.tiandiyoyo.com/wp-content/themes/freshblog/images/browser/Safari.png"; elseif(stristr($br[0],'UC')) $brimg = "http://www.tiandiyoyo.com/wp-content/themes/freshblog/images/browser/ucweb.png"; else $brimg = "http://www.tiandiyoyo.com/wp-content/themes/freshblog/images/browser/anonymouse.png"; $return .= " <img src='".$brimg."' title='".getbrowser($ua)."' />"; }
好,到这里,大功告成,剩下的,有时间的话,再把其他浏览器补全了。目前只支持chrome,ie,firefox,opera等简单的识别。
最后还是觉得chrome 对网页特效最流畅!
国产浏览器大多是IE内核的…我访问别人博客时候经常被提醒说是改换浏览器啦……
人气贼旺
试试这个
其实我用的是猎豹,它显示的是IE8.0
正是我要找的,我去加了看看。
可以再加个国旗··
我就是不想要国旗等信息才写的代码。。。
多说似乎无解吧?
有,删了它就行了。
对对,UserAgent就在数据库里躺着呢,不过WP有插件实现起来容易一些
恩,插件有其他2个功能,暂时不需要。而且一般自己能写的都自己写,基本不用别人的插件,除非官方的。
好吧,我用的火狐。。。
库弱目路过。
好吧,我看懂你说的了。
wp数据库存了好多没用的东西。。。
还有各类函数,等自己写了个函数功能,缺X的发现它有自带的。。。
好,学习了,最近做了一个关于wordpress技术研究的网站
强悍的wp,我以为只有js可以做
WP是蛮强大的,否则它怎么跑都那么慢啊。
多说可不可以显示出来
没有看明白,说得是啥?
就是,我用了多说评论框,能不能把UA显示出来
那应该不行,用了多说,评论显示输出的全是多说代码。试试看用js不知道能不能替换多说里的信息。
WP已经记录UA到数据库里?突然觉得隐私暴露了。。。
另外,你最后代码的ELSE IF 应该替换为SWITH CASE的才对,曾记老师说过。
我忘了是哪种语言,SELECT CASE后面只支持INT,所以经常写类似的语法都用if替代了。
哦。IF也挺好,如果不再修改代码。。
我记得这个好像wp表里面本来已经记录和这个信息了。而且啊还有这个插件可以显示
恩,是有了,我也是做的时候才查到。
这个效果不错
用了后才发现怎么大家都是用chrome的。
来看看效果
为什么我这儿打开没有CSS啦?
每次都是?