php生成随机验证码图片

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 "";
    }

最后我验证出了一点小问题,第一次提交的结果总是错的,第二次输入正确才行,目前还没有解决,酌情使用。

你可能感兴趣的:(php,php,android,开发语言)