1,CaptchaPicture.php用于生成画布,然后在画布上生成四位随机验证码
session_start();
header("Content-type:image/png"); //创建图像的格式
$image_width=76; //设置图像的宽度
$image_height=40; //设置图像的高度
$length=4; //字符串长度为4
//除去0,2,o,l容易混淆的字符
$str="23456789abcdefghijkmnopqrstuvwxyzABCDEFGHIJKMNOPQRSRUVWXYZ";
$code='';
for($i=0;$i<$length;$i++){
$code.=$str[mt_rand(0,strlen($str))-1]; //从字符串中随机选择
}
$_SESSION['verify']=$code; //从获取到的随机书验证码写入到Session变量中
$image=imagecreate($image_width,$image_height); //创建一个画布
imagecolorallocate($image,25,255,255); //设置画布的颜色
For($i=0;$i<strlen($_SESSION['verify']);$i++){ //循环读取Session变量中的验证码
$font = mt_rand(3,5); //设置随机的字体
$x=mt_rand(1,8)+$image_width*$i/4; //设置随机字符所在位置的x坐标
$y=mt_rand(8,$image_height/4); //设置随机字符所在位置的y坐标
//设置字符颜色
$color = imagecolorallocate($image,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200));
imagestring($image,$font,$x,$y,$_SESSION['verify'][$i],$color); //水平输出字符
}
//绘制干扰元素点
$pixel=30;
$black = imagecolorallocate($image,0,0,0);
for($i=0;$i<$pixel;$i++){
imagesetpixel($image,mt_rand(0,$image_width-1),mt_rand(0,$image_height-1),$black);
}
imagepng($image); //生成png格式的图像
imagedestroy($image); //释放图片资源
?>
2,SubmitVerify.php用于做一个简单的测试,验证验证码功能是否正常
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="CheckLogin.php" method="post">
<div class="verify">
<input type="text" id="verify" name="verify" class="input" placeholder="验证码">
<a>
<img src="CaptchPicture.php" onclick="this.src=this.src+'?'+Math.random()"> //单击验证码生成新的验证码
</a>
</div>
<button type="submit">提交</button>
</form>
</body>
</html>
3,CheckLogin.php用于验证提交后是否能接受到传递的信息,以及判断输入的验证码和生成的验证码是否一致
session_start();
$checks = $_POST["verify"]; //获取表单提交的验证码(用户输入的验证码)
if ($checks=="") {
echo "";
}
if ($checks==$_SESSION["verify"]){ //这个获取的是系统随机生成的验证码
echo "";
}else{
echo "";
}
最后我验证出了一点小问题,第一次提交的结果总是错的,第二次输入正确才行,目前还没有解决,酌情使用。