图片验证码:
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>";
?>