PHP:图片验证码

图片验证码:
1.verify.php
生成验证码图片


**

<?php 
// session是实现多个页面共享数据的
session_start();

// 1.创建画布资源
$img=imagecreatetruecolor(100,30);

// 2.准备颜色
$white=imagecolorallocate($img,255,255,255);
$blue=imagecolorallocate($img,0,0,255);
$gray=imagecolorallocate($img,200,200,200);


// 3.在画布上画图像或文字
imagefill($img,0,0,$white);

// 随时生产5位字符串
// mt_rand — 生成更好的随机数
// range — 根据范围创建数组,包含指定的元素 
// array_merge — 合并一个或多个数组
$arr=array_merge(range(0,9),range('a','z'),range('A','Z'));
// shuffle-打乱数组
shuffle($arr);
// array_slice-从数组中取出一段
// join-将一个一维数组的值转化为字符串
$randStr=join('',array_slice($arr,0,5));

//把随机字符串放到session数组中
$_SESSION['vcode']=$randStr;

// 4.画点
$str='aXdwJ';
imagettftext($img,15,0,15,22,$blue,'D:/xampp/htdocs/php2/msyhbd.ttf',$randStr);

// 点干扰素
for($i=0;$i<500;$i++){
    imagesetpixel($img,mt_rand(0,100),mt_rand(0,30),$blue);
}

// 线干扰素
for($i=0;$i<10;$i++){
    imageline($img,mt_rand(0,100),mt_rand(0,30),mt_rand(0,100),mt_rand(0,30),$blue);
}

// 曲线干扰素
for($i=0;$i<10;$i++){
    imageellipse($img,mt_rand(0,100),mt_rand(0,30),20,20,$blue);
}

// 5.输出最终图像或保存最终图像
header('content-type: image/png');
imagepng($img);

// 6.释放画布资源
imagedestroy($img);
 ?>

2.index.php
注册页面


**

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    
    <title>用户注册</title>
    <style>
    img{
        cursor: pointer;
    }
    img:hover{
        box-shadow: 0 0 3px 3px #888;
    }
    </style>
</head>
<body>
    <h2>用户注册:</h2>
    <hr>
    <form action="reg.php" method="post">
        <p>用户名:</p>
        <p>
            <input type="text" value="user1" name="username">
        </p>
        <p>密码:</p>
        <p>
            <input type="password" value="123" name="password">
        </p>
        <p>验证码:</p>
        <p>
            <img src="verify.php" onclick="this.src='verify.php?rand='+Math.random()">
        </p>
        <p>输入验证码:</p>
        <p><input type="text" name="fcode"></p>
        <p>
            <input type="submit" value="注册">
        </p>
    </form>
</body>
</html>

3.reg.php
注册审核页面


reg.php-测试拿到数据?

<?php
//开启session才可以取出其他页面放到session数组中的数据
session_start();

echo '<pre>';
print_r($_POST);
echo '</pre>';

echo '<pre>';
print_r($_SESSION);
echo '</pre>';
?>

reg.php-判断是否注册成功

<?php
//开启session才可以取出其他页面放到session数组中的数据
session_start();

//获取表单中人们输入的验证码
$fcode=strtolower($_POST['fcode']);

//获取图片中的随机字符串
$vcode=strtolower($_SESSION['vcode']);

//把人们输入的验证码和图片中的随机字符串都变成小写,然后进行比对.
if($fcode==$vcode){
    echo "<h2>{$_POST['username']}注册成功!</h2>";

}else{
    echo "<h2>验证码输入有误!</h2>";
}

echo "<script>setTimeout(function(){
    location='index.php'
},1000)</script>";

?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值