12.4 图像验证码
图像验证码就是在一张图片上写上几个字符,并辅之以一些干扰元素(通常为像素点和斜线)。图像验证码经常用在用户登录、论坛发帖等场景中,其目的是为了防止机器人(程序)自动操作,验证此次行为是由用户来完成的。以下示例为一个生成验证码的文件code.php:
<?php
function random($len){
$srcstr="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
mt_srand();
$strs="";
for($i=0;$i<$len;$i++){
$strs.=$srcstr[mt_rand(0,35)];
}
return strtoupper($strs);
}
$str=random(4); //随机生成的字符串
$width =50; //验证码图片的宽度
$height = 25; //验证码图片的高度
@header("Content-Type:image/png");
//echo $str;
$im= imagecreate($width,$height);
//背景色
$back=imagecolorallocate($im,0xFF,0xFF,0xFF);
//模糊点颜色
$pix=imagecolorallocate($im,187,230,247);
//字体颜色
$font=imagecolorallocate($im,41,163,236);
//绘制模糊作用点
mt_srand();
for($i=0;$i<1000;$i++){
imagesetpixel($im,mt_rand(0,$width),mt_rand(0,$height),$pix);
}
imagestring($im,5,7,5,$str,$font);
imagerectangle($im,0,0,$width-1,$height-1,$font);
imagepng($im);
imagedestroy($im);
在另外一个文件a.php中将code.php文件作为HTML标签img的src属性值,代码如下:
<?php
echo "<img src=code.php>";//生成图片
?>
在浏览器中运行a.php文件