php验证码实现
PHP验证码实现方法
使用GD库生成图片验证码
PHP的GD库可以动态生成验证码图片,以下是一个基础实现示例:
<?php
session_start();
$width = 120;
$height = 40;
$image = imagecreatetruecolor($width, $height);
$bgColor = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $bgColor);
$chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789';
$code = '';
$length = 4;
for ($i = 0; $i < $length; $i++) {
$char = $chars[rand(0, strlen($chars) - 1)];
$code .= $char;
$color = imagecolorallocate($image, rand(0, 150), rand(0, 150), rand(0, 150));
imagettftext($image, 20, rand(-30, 30), 10 + $i * 30, 30, $color, 'arial.ttf', $char);
}
for ($i = 0; $i < 100; $i++) {
$color = imagecolorallocate($image, rand(200, 255), rand(200, 255), rand(200, 255));
imagesetpixel($image, rand(0, $width), rand(0, $height), $color);
}
$_SESSION['captcha'] = $code;
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>
验证码验证处理
生成验证码后需要验证用户输入:

<?php
session_start();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (isset($_POST['captcha']) && isset($_SESSION['captcha'])) {
if ($_POST['captcha'] == $_SESSION['captcha']) {
echo "验证码正确";
} else {
echo "验证码错误";
}
}
unset($_SESSION['captcha']);
}
?>
增加安全性措施
为了提高安全性,可以采取以下措施:

- 使用更复杂的字符组合
- 增加干扰线和干扰点
- 限制验证码有效期
- 限制验证码尝试次数
使用第三方库
可以考虑使用更专业的验证码库:
- Securimage:功能丰富的PHP验证码库
- Gregwar/Captcha:Composer包,支持多种验证码类型
前端调用示例
HTML页面调用验证码并提交验证:
<form method="post">
<img src="captcha.php" onclick="this.src='captcha.php?'+Math.random()">
<input type="text" name="captcha" placeholder="输入验证码">
<button type="submit">提交</button>
</form>
注意事项
- 确保服务器已安装GD库
- 字体文件路径需要正确
- 生产环境应使用HTTPS防止验证码被截获
- 定期更换验证码生成逻辑防止被破解
以上方法提供了从生成到验证的完整流程,可以根据实际需求调整验证码的复杂度、样式和安全策略。






