在 PHP 中实现验证码判断通常需要以下步骤:
生成验证码:可以使用 PHP 的 GD 库或者其他库来生成验证码图片,包括随机生成验证码字符串、设置字体颜色、背景颜色、干扰线等效果。
将验证码字符串保存到 session 中:在生成验证码图片的同时,将验证码字符串保存到 session 中。
用户输入验证码:在用户提交表单时,要求用户输入验证码。
验证用户输入的验证码:获取用户输入的验证码字符串,与 session 中保存的验证码字符串进行比对,判断是否一致。
以下是一个简单的验证码实现示例:
<?php
session_start();
// 生成验证码
$code = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 5);
$_SESSION['captcha'] = $code;
// 创建一个 100x30 的验证码图片
$image = imagecreatetruecolor(100, 30);
// 设置背景颜色
$bg_color = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $bg_color);
// 设置验证码字符串的颜色
$text_color = imagecolorallocate($image, 0, 0, 0);
// 在图片上写入验证码字符串
imagestring($image, 5, 10, 5, $code, $text_color);
// 输出验证码图片
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>
<form method="post" action="verify.php">
<input type="text" name="captcha">
<img src="captcha.php" alt="captcha">
<input type="submit" value="Submit">
</form>
在 verify.php 中验证用户输入的验证码:
<?php
session_start();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$captcha = $_POST['captcha'];
if (isset($_SESSION['captcha']) && $_SESSION['captcha'] == $captcha) {
echo '验证码正确';
} else {
echo '验证码错误';
}
}
?>
在这个示例中,我们通过 session 保存验证码字符串,用户输入验证码后与 session 中保存的验证码字符串进行比对,从而实现验证码的判断。