下面就来详细讲解一下“一个简单的PHP验证码实现代码”的完整攻略。
第一步:创建验证码图片
我们先要创建一个验证码图片,然后在图片上生成随机字符,将其作为验证码。代码如下:
session_start();
// 设置图片宽度和高度
$width = 100;
$height = 30;
// 创建验证码图片
$image = imagecreatetruecolor($width, $height);
// 设置图片背景颜色
$bg_color = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $bg_color);
// 随机生成验证码字符
$letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$letter = '';
for ($i = 0; $i < 4; $i++) {
$letter .= $letters[rand(0, strlen($letters) - 1)];
}
// 将验证码字符存储到session中
$_SESSION['captcha'] = $letter;
// 将验证码字符画到图片上
$text_color = imagecolorallocate($image, 0, 0, 0);
imagettftext($image, 20, 0, 10, 25, $text_color, 'arial.ttf', $letter);
// 输出图片
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
通过以上代码,我们可以得到一个宽为100,高为30的验证码图片,其中字体颜色为黑色,背景颜色为白色,验证码在图片的中间位置。
第二步:验证用户输入的验证码
在用户提交表单时,我们需要对用户输入的验证码进行验证。代码如下:
session_start();
$captcha = $_POST['captcha'];
$real_captcha = $_SESSION['captcha'];
if (strtolower($captcha) == strtolower($real_captcha)) {
echo '验证码正确';
} else {
echo '验证码错误';
}
以上代码将用户输入的验证码和session中存储的验证码进行对比,如果相同则验证成功,否则验证失败。
示例说明
示例1:将验证码图片显示在页面中,用户可以看到验证码并输入。用户输入后,提交表单,PHP代码根据用户输入的验证码进行验证,正确则提示验证成功,否则提示验证失败。示例代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>验证码示例</title>
</head>
<body>
<form action="check_captcha.php" method="POST">
<label for="captcha">验证码:</label>
<input type="text" id="captcha" name="captcha">
<img src="create_captcha.php" alt="验证码">
<button type="submit">提交</button>
</form>
</body>
</html>
在上面的示例代码中,我们将验证码图片输出到img
标签中,用户可以看到验证码并输入。当用户提交表单后,跳转到check_captcha.php
页面进行验证。
示例2:将验证码图片作为附件发送到用户邮箱中,用户在邮箱中获取验证码并输入。用户输入后,提交表单,PHP代码根据用户输入的验证码进行验证,正确则提示验证成功,否则提示验证失败。示例代码如下:
session_start();
// 用户邮箱
$email = 'example@example.com';
// 设置图片宽度和高度
$width = 100;
$height = 30;
// 创建验证码图片
$image = imagecreatetruecolor($width, $height);
// 设置图片背景颜色
$bg_color = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $bg_color);
// 随机生成验证码字符
$letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$letter = '';
for ($i = 0; $i < 4; $i++) {
$letter .= $letters[rand(0, strlen($letters) - 1)];
}
// 将验证码字符存储到session中
$_SESSION['captcha'] = $letter;
// 将验证码字符画到图片上
$text_color = imagecolorallocate($image, 0, 0, 0);
imagettftext($image, 20, 0, 10, 25, $text_color, 'arial.ttf', $letter);
// 保存验证码图片到本地
$image_filename = 'captcha.png';
imagepng($image, $image_filename);
imagedestroy($image);
// 发送邮件
$to = $email;
$subject = '验证码';
$message = '您的验证码为:' . $letter;
$headers = array(
"From: webmaster@example.com",
"Reply-To: webmaster@example.com",
"Content-Type: multipart/mixed; boundary=\"boundary\"",
);
// MIME版本头信息
$mime_header = "--boundary\r\n";
$mime_header .= "Content-Type:text/plain; charset=\"utf-8\"\r\n";
$mime_header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
// 邮件正文
$mime_content = $mime_header;
$mime_content .= $message . "\r\n\r\n";
// 附件
$file_size = filesize($image_filename);
$file_content = file_get_contents($image_filename);
$mime_content .= "--boundary\r\n";
$mime_content .= "Content-Type: application/octet-stream; name=\"$image_filename\"\r\n";
$mime_content .= "Content-Disposition: attachment; filename=\"$image_filename\"\r\n";
$mime_content .= "Content-Transfer-Encoding: base64\r\n\r\n";
$mime_content .= chunk_split(base64_encode($file_content)) . "\r\n";
$mime_content .= "--boundary--\r\n";
// 发送邮件
$success = mail($to, $subject, $mime_content, implode("\r\n", $headers));
if ($success) {
// 发送成功
echo '验证码已发送至您的邮箱,请查收';
} else {
// 发送失败
echo '发送验证码失败';
}
以上代码将生成的验证码图片保存到本地,并将验证码图片作为附件发送给用户。当用户输入验证码后,跳转到验证页面进行验证。
希望以上的攻略对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一个简单的PHP验证码实现代码 - Python技术站