首先我承认帝国很强大. 但我一直搞不懂为什么WC没有美化验证码. 而且这个东西和安全性也扯不上多大关系. 所以我参照原文件进行了一些修改, 其实我也只是把图片的背景改了,加多了一些干扰像素,再加入了一些颜色,让它好看了一点点而己.
注:由于我加入太多的干扰像素,所以验证码看起来可能有点太艳了。 大家可以自行修改48行的32和54行的(5, 16)来改变干扰像素的多少
60行代码: for($i=0; $i <= 32; $i++) 70行代码: $linenums = mt_rand(5, 16);
下面是一些用到的函数参考.大家可以对比这些函数自行修改文件.
--------------------------------------------------------------------------------
rand -- 产生一个随机数 说明 int rand ( [int min, int max])
如果没有提供可选参数 min 和 max,rand() 返回 0 到 RAND_MAX 之间的伪随机数。例如想要 5 到 15(包括 5 和 15)之间的随机数,用 rand(5, 15)。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
mt_rand -- 生成更好的随机数 说明 int mt_rand ( [int min, int max])
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
imagecolorallocate -- 为一幅图像分配颜色 说明 int imagecolorallocate ( resource image, int red, int green, int blue)
imagecolorallocate() 返回一个标识符,代表了由给定的 RGB 成分组成的颜色。image 参数是 imagecreate() 函数的返回值。red,green 和 blue 分别是所需要的颜色的红,绿,蓝成分。这些参数是 0 到 255 的整数或者十六进制的 0x00 到 0xFF。imagecolorallocate() 必须被调用以创建每一种用在 image 所代表的图像中的颜色。
注: 第一个对 imagecolorallocate() 的调用填充背景色。
--------------------------------------------------------------------------------
-------------------------------------------------------------------------------- imagecolorallocatealpha -- 为一幅图像分配颜色 + alpha 说明 int imagecolorallocatealpha ( resource image, int red, int green, int blue, int alpha)
imagecolorallocatealpha() 的行为和 imagecolorallocate() 相同,但多了一个额外的透明度参数 alpha,其值从 0 到 127。0 表示完全不透明,127 表示完全透明。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
imagesetpixel -- 画一个单一像素 说明 int imagesetpixel ( resource image, int x, int y, int color)
imagesetpixel() 在 image 图像中用 color 颜色在 x, y 坐标(图像左上角为 0, 0)上画一个点。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
imageline -- 画一条直线 说明 int imageline ( resource image, int x1, int y1, int x2, int y2, int color)
imageline() 用 color 颜色从坐标 x1,y1 到 x2,y2(图像左上角为 0, 0)画一条直线。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
imagearc -- 画椭圆弧 说明 int imagearc ( resource image, int cx, int cy, int w, int h, int s, int e, int color)
imagearc() 以 cx,cy(图像左上角为 0, 0)为中心在 image 所代表的图像中画一个椭圆弧。w 和 h 分别指定了椭圆的宽度和高度,起始和结束点以 s 和 e 参数以角度指定。0°位于三点钟位置,以逆时针方向绘画。
--------------------------------------------------------------------------------
用法:直接覆盖e/ShowKey/下的index.php
注: 因为本验证码加多了干扰像素,所以容易出现看不清楚的情况。 请各位在文件中修改干扰像素点,线,弧的个数, 在9楼的附件我己修改了干扰像素的个数。。这样就看的很清楚了 或在模板里修改验证码显示的代码: <img src="/e/ShowKey/?v=pl" id="checkcode" onClick="this.src='/e/ShowKey/?v=pl&rand='+Math.random();" style="cursor:pointer;" alt="如果您无法识别验证码,请点图片更换" align="absmiddle" /> 可以看演示:http://www.ez029.com/levels/Test/2009/09/19.html
上传以下附件: [下载 *.rar](文件大小:3.44 KB,下载次数:161)
|