最近一直在研究ecshop,发现ecshop的验证码真的不太好看,所以自己修改了一款验证码样式,先上图吧
下面上代码
首先做两个图片背景为白色(因为我做的验证码的背景是纯白色的,你也可以改成你想用的 背景色,记住一个图片要做两张,一个gif,一个jpg) 宽高为145px*20px,的jpg、gif文件命名为captcha_bg6.jpg,captcha_bg6.gif,放到 data/captcha 目录下,
然后给验证码找一个字体,我用的是 arial.ttf 这个,把这个字体文件也放到data/captcha 目录下,下面开始修改 includes/cls_captcha.php 文件,找到第49行
var $themes_jpg = array( 1 => array('captcha_bg1.jpg', 255, 255, 255), 2 => array('captcha_bg2.jpg', 0, 0, 0), 3 => array('captcha_bg3.jpg', 0, 0, 0), 4 => array('captcha_bg4.jpg', 255, 255, 255), 5 => array('captcha_bg5.jpg', 255, 255, 255), ); var $themes_gif = array( 1 => array('captcha_bg1.gif', 255, 255, 255), 2 => array('captcha_bg2.gif', 0, 0, 0), 3 => array('captcha_bg3.gif', 0, 0, 0), 4 => array('captcha_bg4.gif', 255, 255, 255), 5 => array('captcha_bg5.gif', 255, 255, 255), );
改为:
var $themes_jpg = array( 1 => array('captcha_bg6.jpg', 16, 138, 205), 2 => array('captcha_bg6.jpg', 46, 46, 46), 3 => array('captcha_bg6.jpg', 176, 46, 56), 4 => array('captcha_bg6.jpg', 18, 18, 18), 5 => array('captcha_bg6.jpg', 248, 3, 0), ); var $themes_gif = array( 1 => array('captcha_bg6.gif', 16, 138, 205), 2 => array('captcha_bg6.gif', 46, 46, 46), 3 => array('captcha_bg6.gif', 176, 46, 56), 4 => array('captcha_bg6.gif', 18, 18, 18), 5 => array('captcha_bg6.gif', 248, 3, 0), );
这段代码中的
红色部分是验证码的颜色,你也可以改成你喜欢的颜色,然后找到这一句
imagestring($img_org, 5, $x, $y, $word, $clr);
修改成
ImageTTFText($img_org, 15, rand(0, 10), 25, 25, $clr, "data/captcha/arial.ttf", $word);
这里面的15 是字号,25,25, 是验证码在图片上的位置, data/captcha/arial.ttf 这个是验证码字体的位置。
修改到这里之后验证码的样式是这样的
没有噪点和线条,下面我们来为验证码添加噪点和线条,在
ImageTTFText($img_org, 15, rand(0, 10), 25, 25, $clr, "data/captcha/arial.ttf", $word);
这句之后添加
for($i=0; $i<3; $i++) { // 画线 imageline($img_org, 0, rand(0, 20), rand(70,100), rand(0, 20), $clr); } $t = imagecolorallocate($img_org, rand(0, 255),rand(0, 255),rand(0, 255)); // 为图片添加噪点 for($i=0; $i<200; $i++) { imagesetpixel($img_org, rand(1, 100), rand(1, 30), $t); }
然后就大功告成了,如果不想要噪点的话,可以把
// 为图片添加噪点 for($i=0; $i<200; $i++) { imagesetpixel($img_org, rand(1, 100), rand(1, 30), $t); }
这段代码去掉即可。
经本人测试成功,如果有什么问题,请留言!!!
这里修改之后后台验证码会显示不出来,具体原因还没找到,目前的解决方法是把后台的验证码取消掉。
下载地址:http://download.csdn.net/detail/menghuan0625/7527999