您的位置:首页 > 编程语言 > PHP开发

关于PHP里面复杂的验证码的制作

2012-03-06 10:26 232 查看
为了防止暴力破解,基本上每个网站的登陆验证都离不开验证码,下面将以通俗易懂的方式给出在PHP中如何应用GD库制作复杂的验证码,闲话少说,直接看代码:

<?php

//首先建立一个产生随即字符串的函数

function randstr($length){

$result="";

$string="^&*()";

//做循环

for ($i=0;$i<$length;$i++){

$result.=$string[mt_rand(0,strlen($string)-1)];

}

return $result;

}

//输出到浏览器

header("content-type:image/png");

//初始化图像的长和宽

$image_x=80;

$image_y=30;

//创建图片

$image=imagecreate($image_x,$image_y);

//定义背景色

$background_color=imagecolorallocate($image,0xff,0xff,0xff);

//定义所需要的颜色

$black_color=imagecolorallocate($image,0x00,0x00,0x00);

$gray_color=imagecolorallocate($image,0xcc,0xcc,0xcc);

//生成干扰像素

for ($i=0;$i<1000;$i++){

imagesetpixel($image,mt_rand(0,$image_x),mt_rand(0,$image_y),$gray_color);

}

//把随机字符串输入图片

$str=randstr(4);

$x=5;

for ($i=0;$i<strlen($str);$i++){

imagechar($image,5,$x,$y,substr($str,$i,1),$black_color);

//设定验证字符的偏移量

$x+=18;

$y=rand(1,15);

}

//生成矩形边框

imagerectangle($image,0,0,$image_x-1,$image_y-1,$black_color);

//输出图片

imagepng($image);

//最后释放资源

imagedestroy($image);

?>

这是一段产生标准的4位验证码的代码,说一下其中各个变量的意义以便于大家修改:

$image_x:图片的宽

$image_y:图片的高

根据你要产生的验证的位数,可以自行去调整

$baclground_color:背景色

$black_color:验证码字体颜色和图片边框的颜色

$gray_color:干扰的颜色

根据需要自行去调整

$x:验证码字符之间的间距

$y:验证码字符上下的偏移量

这两个变量的初值和偏移量根据图片的宽和高适当的去调整

以上就是在PHP中制作复杂的验证码的全过程,觉得实用的话帮忙踩一下,谢谢支持!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: