相信很多使用zblog的朋友都有一个很纠结的问题,那就是在垃圾评论与评论验证码之间的选择问题,不开启评论验证码很容易导致很多垃圾评论,开启评论验证码功能的话,Z-blog自带的评论验证码真的是很鸡肋的功能设计,四个字:看不清楚!虽然现在应用中心也有相关的插件,比如鸟儿博客写的替换自带验证码的插件。
但是鸟儿博客的这款插件是收费的,需要支付66元。另外还有一款免费的,安装之后虽然能够更明确的显示验证码,但是在访客想发表评论的时候,输入的验证码会出现一直报错的情况,一直提示输入验证码,即使访客输入的验证码是正确的,还是会报错,貌似这款插件不能识别是否已经输入验证码。再加上这款插件的的作者的官网已经关闭,并且2年来从未修复这个BUG,所以还是等于没用。
前几天,看到知名博主卢松松在本站评论说验证码太难辨认。(至于是否是卢松松本人,这里不做鉴别哈。)
自从有人反馈这个问题之后,就一直想要解决这个问题,由于之前对于Zblog的ASP版的程序结构还是比较了解的,所以现在在PHP版上也比较有方向。所以,今天忙完工作,就决定把这个拖了10多天的问题解决掉。经过一番摸索,终于找到解决方法。在这里也顺便分享给大家,给需要的朋友。
一、找出评论验证码对应的程序文件
一般这种程序自带的功能会放在 /zb_system/ 文件夹。而经过我分析后,验证码的程序文件的路径为:
/zb_system/functiON/lib/validatecode.php
二、打开 validatecode.php文件,分析各个模块对应的代码
由于Zblog程序设计团队在设计程序的时候对各个代码段的功能进行了注释,所以你可以很清晰的了解各个代码段的作用。比如:
上面这段代码中的 protected $codelen = 5;//位数 是指验证码的位数,默认是5,我们可以改成4,如果你修改成6位以上的话,你需要修改下面的验证码的宽度,要不然无法正常现实,字体设置太小的话,也不利于辨认,所以一切的修改都要从访客的用户体验出发。
三、验证码字体及线条、雪花等干扰项的修改
上面这段代码就是验证码中线条、雪花干扰项的代码文件。我主要做了如下修改。
1、验证码默认调用的字体文件是 /zb_system/defend/arial.ttf 文件。我修改成了自定义的字体文件。
默认代码:
$this->font = $zbp->path . (isset($zbp->option['ZC_VERIFYCODE_FONT'])?$zbp->option['ZC_VERIFYCODE_FONT']:'zb_system/defend/arial.ttf');
修改成:
$this->font = $zbp->usersdir . 'theme/ChenDeXin/style/fonts/' . mt_rand(1,3) . '.ttf';
我在 /theme/ChenDeXin/style/fonts/ 文件夹分别放置了名称为 1.ttf、2.ttf、3.ttf三个字体文件给程序调用,这需要你根据你使用主题的实际情况对上面代码的路径进行修改。
2、修改线条、雪花干扰项的代码。
默认代码:
protected function createLine() {
for ($i=0;$i<6;$i++) {
$color = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$color);
}
for ($i=0;$i<100;$i++) {
$color = imagecolorallocate($this->img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),'*',$color);
}
}
修改成:
protected function createLine() {
for ($i=3; $i<=$this->height-3; $i=$i+3) {
$color = imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));
imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$color);
}
for ($i=2;$i<100;$i=$i+6) {
$color = imagecolorallocate($this->img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),'*',$color);
}
}
按照上面的步骤修改完成之后,基本上已经减低了验证码识别难度,上面提及的字体文件你可以直接去网上下载自己喜欢的字体文件。这样下来,你既减低了验证码的辨别难度,又等于定制了属于自己的个性验证码了。
四、终极方法——完全取消线条、雪花等干扰项
如果你既不想定制属于自己的个性验证码,又对Zblog自带的验证码深恶痛绝的话,那就干脆点,直接取消线条、雪花等干扰项吧,这样子可以直接变为纯色背景,绝对的高辨识度!
1、把 /zb_system/function/lib/validatecode.php 文件下载到本地,并且复制一份出来备份,防止意外!
1、打开 validatecode.php 文件,在文件中搜索如下代码:
public function GetImg($n = null) {
$this->createBg();
$this->createCode($n);
$this->createLine();
$this->createFont();
$this->outPut();
}
修改成:
public function GetImg($n = null) {
$this->createBg();
$this->createCode($n);
// $this->createLine();
$this->createFont();
$this->outPut();
}
这样就注释掉了干扰项功能,简单高效快捷吧。下面上一张修改前后的对比图。
好了,关于Z-Blog评论验证码看不清楚的解决方法就讲到这里,上面不但提供了个性验证码的方法,也提供了替换Zblog自带验证码的方法,可以说是关于zblog验证码的文章中最全最详细的了,还有不明白的请直接在下面评论框留言,大家一起交流成长。
未经允许不得转载:搬瓦工VPS_美国VPS » ZBlog评论验证码看不清楚以及定制属于自己的个性验证码的方法