一个简单的PHP验证码实现代码

下面就来详细讲解一下“一个简单的PHP验证码实现代码”的完整攻略。

下面就来详细讲解一下“一个简单的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验证码实现代码

基础教程推荐