Home  >  Article  >  Database  >  The 30 words are rewritten as follows: PHP Development Guide: Simple Implementation of Image Verification Code

The 30 words are rewritten as follows: PHP Development Guide: Simple Implementation of Image Verification Code

WBOY
WBOYOriginal
2023-07-01 08:43:50954browse

With the development of the Internet, the security of websites has received more and more attention. Among them, image verification codes are widely used in user registration, login and other scenarios to prevent automated operations by malicious robots. This article will introduce how to use PHP to develop and implement a simple image verification code function.

1. What is image verification code

Image verification code is an image-based security authentication method. A random string of numbers and letters is usually displayed in an image, requiring the user to Correctly identify and enter in the input box. Only when the user enters the correct verification code can subsequent operations continue, thus effectively preventing automated attacks and abuse by malicious robots.

2. Development environment preparation

Before starting development, we need to prepare a PHP development environment. You can choose to build a PHP running environment locally, or you can use some integrated development environments (IDE) such as XAMPP, WAMP, etc.

3. Generate verification code image

First, we need to generate a verification code image containing a random string. PHP provides the GD library, which can be used to generate and manipulate images.

The following is a simple function example for generating a verification code image:

function generateCaptcha($length = 4, $width = 100, $height = 40) {
    $code = '';
    $charset = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charset_length = strlen($charset);

    // 生成随机字符串
    for ($i = 0; $i < $length; $i++) {
        $code .= $charset[random_int(0, $charset_length - 1)];
    }

    // 创建画布
    $image = imagecreatetruecolor($width, $height);

    // 设置背景色和文本颜色
    $bg_color = imagecolorallocate($image, 255, 255, 255);
    $text_color = imagecolorallocate($image, 0, 0, 0);

    // 填充背景色
    imagefill($image, 0, 0, $bg_color);

    // 写入验证码文本
    $font_size = 20;
    $x = ($width - $font_size * $length) / 2;
    $y = ($height + $font_size) / 2;

    for ($i = 0; $i < $length; $i++) {
        $angle = random_int(-30, 30);
        imagettftext($image, $font_size, $angle, $x, $y, $text_color, 'path/to/font.ttf', $code[$i]);
        $x += $font_size;
    }

    // 添加干扰线
    for ($i = 0; $i < 5; $i++) {
        $line_color = imagecolorallocate($image, random_int(0, 255), random_int(0, 255), random_int(0, 255));
        imageline($image, random_int(0, $width), random_int(0, $height), random_int(0, $width), random_int(0, $height), $line_color);
    }

    // 输出图像
    header('Content-Type: image/png');
    imagepng($image);

    // 销毁图像资源
    imagedestroy($image);

    // 返回验证码字符串
    return $code;
}

The above function generates a verification code image with a specified length, specified width and height by calling the function provided by the GD library, and Add random strings and distracting lines to the picture.

4. Use the verification code function

To use the verification code function on a Web page, you need to embed the generated verification code image into HTML and verify it when the user submits the form.

The following is a simple verification code example:

<!DOCTYPE html>
<html>
<head>
    <title>验证码示例</title>
</head>
<body>
    <form action="verify.php" method="POST">
        <label for="captcha">验证码:</label>
        <input type="text" name="captcha" id="captcha">
        <img src="captcha.php" alt="验证码">
        <input type="submit" value="提交">
    </form>
</body>
</html>

In the above HTML code, we added an input box, a verification code image and a submit button to the form. The src attribute of the verification code image points to a file named captcha.php, which is used to dynamically generate the verification code image.

The following is the sample code of the captcha.php file:

session_start();

$code = generateCaptcha();  // 调用生成验证码函数生成随机字符串

// 将验证码保存在session中
$_SESSION['captcha'] = $code;

// 输出验证码图片
header('Content-Type: image/png');
imagepng($image);

In the captcha.php file, we encapsulate the process of generating the verification code into a function and save the generated random string in session.

When submitting the form, we need to verify the verification code entered by the user, as shown below:

session_start();

$captcha = $_POST['captcha'];  // 获取用户输入的验证码
$code = $_SESSION['captcha'];  // 获取保存在session中的验证码

// 比较用户输入的验证码和保存在session中的验证码
if (strtolower($captcha) === strtolower($code)) {
    // 验证码输入正确
    echo "验证码输入正确";
} else {
    // 验证码输入错误
    echo "验证码输入错误";
}

// 清空保存在session中的验证码
unset($_SESSION['captcha']);

In the above code, we compare the verification code entered by the user with the verification code saved in the session The verification codes are compared. If they are equal, it means that the verification code was entered correctly. Otherwise, it means that the verification code was entered incorrectly.

Through the above steps, we have successfully implemented a simple image verification code function. In actual projects, the length, character set, and image size of the verification code can be customized according to needs to improve security. In addition, in order to prevent attacks by malicious robots, some restrictions can be added to the verification process, such as limiting the number of attempts by users within a specified time, adding a verification code refresh mechanism, etc.

Summary

This article introduces how to use PHP to develop and implement a simple image verification code function. By using the GD library to generate a random string, embed it into the verification code image, and then save the verification code in the session for verification, this effectively prevents automated operations by malicious robots. I hope this article is helpful to you, thank you for reading!

The above is the detailed content of The 30 words are rewritten as follows: PHP Development Guide: Simple Implementation of Image Verification Code. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn