前面我们介绍了在巩义做网站中,使用php绘制画布并写入验证码的方式及函数,下面我们具体写一个验证码的实例为大家做一个参考。
1.产生随机4位字符串,
使用range()进行随机创建数组,通过array_merge()形成一个数组;然后使用shuffle()打乱该数组,并使用array_rand()函数从数组中取出多个单元,并返回取到的单元的键值,再通过循环的方式找到对应的字符;
$arr1=array_merge(range('A','Z'),range('a','z'),range('0','9'));
shuffle($arr1);
$arr2=array_rand($arr1,4);
$str='';
foreach ($arr2 as $index) {
$str.=$arr1[$index];
}
// print_r($str);//注意:数组和字符串不能用echo打印
2.创建空的画布,
$width=100;
$height=30;
$img=imagecreatetruecolor($width, $height);
3.绘制一个带填充颜色的矩形;
$color1=imagecolorallocate($img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));//这是使用mt_rand对颜色进行随机;
imagefilledrectangle($img,0,0,$width,$height,$color1);
4.绘制干扰点
for ($i=1;$i<1000;$i++) {
$color2=imagecolorallocate($img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
imagesetpixel($img, mt_rand(0,$width), mt_rand(0,$height), $color2);
}
5.往图像中写入ttf字体,imagettftext()
$fontfile="C:\Windows\Fonts\simfang.ttf";
$color3=imagecolorallocate($img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
imagettftext($img,28,0,10,26,$color3,$fontfile,$str);
6.输出图像到浏览器
header("content-Type:image/png");
imagepng($img);
7.销毁图像,
imagedestroy($img);