验证码是网站开发中常用的功能,可以保证用户提交数据和服务器的安全,验证码的形态也是千奇百怪,从传统的数字+字母,到拼图,再到找元素等等越来越复杂。
今天说一下用PHP原生开发方式如何写一个最常见的数字+字母图片验证码功能,过程非常简单。
首先创建验证码生成文件verify.php
<?php
// 开启session
session_start();
// 创建图片资源,宽高
$img = imagecreatetruecolor(70,30);
// 创建蓝色
$blue = imagecolorallocate($img,0,0,255);
// 创建灰色
$gray = imagecolorallocate($img,200,200,200);
// 用灰色填充图片背景色
imagefill($img,0,0,$gray);
// 合并随机生成0-9,a-z,A-Z的数组
$arr = array_merge(range(0,9),range('a','z'),range('A','Z'));
// 随机打乱数组
shuffle($arr);
// 连接数组,取出前4位
$randStr = join('',array_slice($arr,0,4));
// 把验证码存入session
$vcode = $_SESSION['vcode'] = $randStr;
// 用蓝色字体显示,设置字体文件,生成验证码
imagettftext($img,15,0,0,20,$blue,'C:\Windows\Fonts\Arial.ttf',$randStr);
// 设置文件编码
header('content-type:image/jpeg');
// 输出jpg格式图片
imagejpeg($img);
// 释放资源
imagedestroy($img);
写一个简单的表单页面index.html用来用户提交数据在img标签中引入前面的verify.php文件,增加onclick属性用来每次点击刷新不同的验证码。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form action="check.php" method="post">
<p>用户名:<input type="text" name="username"></p>
<p>密 码:<input type="password" name="password"></p>
<p>验证码:<input type="text" name="fcode"> <img src="verify.php" onclick="this.src='verify.php?rand='+Math.random()" alt=""></p>
<p><input type="submit" value="注册"></p>
</form>
</body>
</html>
页面效果如图
最后再写一个用来验证提交数据的页面check.php
<?php
// 开启session
session_start();
// 获取表单传来用户输入的验证码,并转换为小写
$fcode = strtolower($_POST['fcode']);
// 获取session中保存的生成验证码
$vcode = strtolower($_SESSION['vcode']);
// 对比两个验证码是否一致
if($fcode == $vcode){
echo "用户 {$_POST['username']} 注册成功!";
}else{
echo '验证码错误!';
}
本站原创内容,如需转载请注明来源:https://www.liutonghui.com/67.html
评论列表(0条)
暂时没有评论!