在 PHP 中实现验证码功能,通常需要使用 GD 库或 ImageMagick 库来生成图片。以下是一个基本的 PHP 代码示例:
session_start();
$code = ""; //验证码
$chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //可用字符集
for ($i = 0; $i < 4; $i++) {
$code .= $chars[mt_rand(0, strlen($chars) - 1)]; //随机生成四个字符拼接成验证码
}
$_SESSION["code"] = strtoupper($code); //将验证码保存到 SESSION 中
//创建验证码图片
$img = imagecreate(100, 40);
$bg_color = imagecolorallocate($img, 255, 255, 255); //背景色
$text_color = imagecolorallocate($img, 0, 0, 0); //文字颜色
for ($i = 0; $i < 10; $i++) { //添加干扰线
imageline($img, mt_rand(0, 100), mt_rand(0, 40), mt_rand(0, 100), mt_rand(0, 40), $text_color);
}
for ($i = 0; $i < 50; $i++) { //添加干扰点
imagesetpixel($img, mt_rand(0, 100), mt_rand(0, 40), $text_color);
}
imagestring($img, 20, 15, 10, $code, $text_color); //添加验证码
header("Content-Type: image/png"); //设置响应头
imagepng($img); //输出验证码图片
imagedestroy($img); //销毁图片资源
在 HTML 表单中添加验证码:
<label for="captcha">验证码:</label>
<input type="text" id="captcha" name="captcha" maxlength="4" required>
<img src="captcha.php" alt="验证码" onclick="this.src="captcha.php?"+Math.random()">
上述 HTML 代码中,captcha.php
是上面生成验证码图片的 PHP 文件路径。每次用户点击验证码图片时,会生成一个新的验证码图片。用户输入表单中的验证码时,需要与 SESSION 中保存的验证码进行比对。