php简单验证码_PHP

PHP 简单验证码是一种在网页上生成随机字符序列以验证用户身份的技术。它通常由服务器端脚本生成,并通过图像或文本形式展示给用户,要求用户输入所见的字符以通过验证。

在PHP中,验证码是一种常见的安全措施,用于防止自动化攻击和垃圾信息,在这篇文章中,我们将介绍如何使用PHP生成简单的验证码。

php简单验证码_PHP插图1

我们需要创建一个PHP文件,然后在该文件中编写以下代码:

<?php
session_start();
// 生成随机字符串
function generateRandomString($length = 6) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength 1)];
    }
    return $randomString;
}
// 生成验证码图片
function generateCaptchaImage($captchaText) {
    $image = imagecreatetruecolor(150, 50);
    $backgroundColor = imagecolorallocate($image, 255, 255, 255);
    $textColor = imagecolorallocate($image, 0, 0, 0);
    imagefilledrectangle($image, 0, 0, 150, 50, $backgroundColor);
    imagestring($image, 5, 30, 15, $captchaText, $textColor);
    header('ContentType: image/png');
    imagepng($image);
    imagedestroy($image);
}
// 保存验证码到session
$_SESSION['captcha'] = generateRandomString();
generateCaptchaImage($_SESSION['captcha']);
?>

这段代码首先定义了一个generateRandomString函数,用于生成指定长度的随机字符串,然后定义了一个generateCaptchaImage函数,用于生成验证码图片,我们使用这两个函数生成一个验证码,并将其保存到session中。

我们需要在HTML页面中显示这个验证码图片,创建一个新的HTML文件,并添加以下代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF8">
    <meta name="viewport" content="width=devicewidth, initialscale=1.0">
    <title>PHP简单验证码示例</title>
</head>
<body>
    <form action="submit.php" method="post">
        <img src="captcha.php" alt="验证码" />
        <input type="text" name="captcha" placeholder="请输入验证码" />
        <input type="submit" value="提交" />
    </form>
</body>
</html>

在这个HTML文件中,我们创建了一个简单的表单,其中包含一个验证码图片和一个文本输入框,用户需要在文本输入框中输入他们看到的验证码,然后点击提交按钮。

当用户提交表单时,我们需要验证他们输入的验证码是否正确,为此,我们创建一个名为submit.php的新PHP文件,并添加以下代码:

<?php
session_start();
if (isset($_POST['captcha']) && $_POST['captcha'] === $_SESSION['captcha']) {
    echo "验证码正确!";
} else {
    echo "验证码错误!";
}
?>

这段代码首先检查用户是否提交了验证码,然后将用户输入的验证码与session中存储的验证码进行比较,如果它们相同,则输出“验证码正确!”;否则,输出“验证码错误!”。

至此,我们已经完成了一个简单的PHP验证码示例,用户可以在表单中输入验证码,并在提交表单时验证其准确性,这种简单的验证码可以有效地防止自动化攻击和垃圾信息。

php简单验证码_PHP插图3

下面是一个简单的 PHP 验证码示例,它将在一个 HTML 介绍中显示,这个验证码脚本包括生成随机字符串、创建图像、绘制文本和噪点干扰。

<?php
session_start(); // 开始一个新的会话
// 设置验证码的宽度和高度
$width = 150;
$height = 50;
// 创建一个图像资源
$image = imagecreatetruecolor($width, $height);
// 分配颜色
$bgColor = imagecolorallocate($image, 255, 255, 255); // 背景色(白色)
$textColor = imagecolorallocate($image, 0, 0, 0); // 文本颜色(黑色)
// 填充背景
imagefill($image, 0, 0, $bgColor);
// 生成随机验证码字符串
$code = '';
$characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$length = 4; // 验证码的长度
for ($i = 0; $i < $length; $i++) {
    $code .= $characters[rand(0, strlen($characters) 1)];
}
// 将验证码存储在会话中,以便稍后验证
$_SESSION['captcha_code'] = $code;
// 在图像上绘制文本
imagettftext($image, 24, 0, 15, 35, $textColor, 'path/to/font.ttf', $code); // 需要一个字体文件(ttf)
// 添加噪点干扰
for ($i = 0; $i < 200; $i++) {
    imagesetpixel($image, rand(0, $width), rand(0, $height), $textColor);
}
// 输出图像头
header('ContentType: image/png');
// 输出图像
imagepng($image);
// 销毁图像资源
imagedestroy($image);
// 以下是HTML介绍代码,将用于显示验证码图像和输入框
echo '
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF8">
    <title>Simple PHP Captcha</title>
</head>
<body>
    <form action="verify_captcha.php" method="post">
        <table>
            <tr>
                <td>Enter the code:</td>
                <td><input type="text" name="captcha" required></td>
                <td><img src="captcha.php" alt="Captcha Image"></td> <!captcha.php is this file >
            </tr>
            <tr>
                <td colspan="3"><input type="submit" value="Submit"></td>
            </tr>
        </table>
    </form>
</body>
</html>
';
?>

请注意以下几点:

1、您需要确保服务器上存在字体文件,并更改'path/to/font.ttf' 为实际的字体文件路径。

2、您还需要创建一个verify_captcha.php 文件来验证用户输入的验证码是否与生成的验证码相匹配。

3、代码header('ContentType: image/png'); 需要在输出任何内容之前调用,以防止错误。

4、验证码图像和输入框显示在一个简单的 HTML 介绍中。

php简单验证码_PHP插图5

在使用此脚本之前,请确保您的 PHP 环境已启用 GD 库,并且支持imagettftextimagepng 函数。

本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/10828.html

至强防御至强防御
上一篇 2024年6月21日 15:30
下一篇 2024年6月21日 15:30

相关推荐