欢迎访问宙启技术站
智能推送

使用PHP函数实现验证码功能

发布时间:2023-06-16 00:16:35

验证码是一种常用的验证机制,用于确保服务器和应用程序只有人类用户能够访问。 在网站登录、注册、忘记密码等场景中,验证码被广泛应用。其主要作用是防止恶意攻击,如自动化登录,暴力密码猜测等。

PHP 是一种流行的服务器端脚本语言,提供了一些内置函数来实现验证码功能。本文将介绍如何使用 PHP 函数创建验证码以及如何在 Web 应用程序中使用验证码。

1.生成验证码图像

PHP 内置 GD 库提供了创建图片的函数,可以使用这些函数来创建验证码图像。以下是一个简单的创建验证码图像的 PHP 代码:

<?php
session_start();
header('Content-Type: image/png');

$width = 100;
$height = 50;

$font = './arial.ttf';
$fontsize = 20;

$image = imagecreatetruecolor($width, $height);
$bgcolor = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $bgcolor);

$code = '';
$charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';
for($i = 0; $i < 4; $i++) {
    $char = $charset[mt_rand(0, strlen($charset) - 1)];
    $code .= $char;
    $color = imagecolorallocate($image, mt_rand(0, 150), mt_rand(0, 150), mt_rand(0, 150));
    imagettftext($image, $fontsize, mt_rand(-15, 15), $i * 25 + 10, 30, $color, $font, $char);
}

$_SESSION['code'] = $code;

imagepng($image);
imagedestroy($image);
?>

以上代码使用了 PHP 的 session 功能,用于存储验证码字符串。 首先,创建一个宽度为 $width 和高度为 $height 的新图像。 然后,使用 imagecolorallocate 函数为图像设定背景颜色,接着使用 imagefill 函数将整张图片填充为白色。接着生成随机的验证码,将其画在图像中心,使用 imagerotate 函数给验证码字符加上一些不同的旋转角度和颜色。

2.显示验证码图片

可以在 HTML 代码中使用以下代码来显示验证码图片:

<img src="captcha.php" alt="captcha">

当用户请求该文件时,将生成一个新的验证码并显示在浏览器上。

3.验证用户输入

在用户提交表单时,将用户输入的验证码值与存储在 session 中的值进行比较,以确保他们是一致的。以下是一份简单的示例:

<?php
session_start();

if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['code'])) {
    if (strtolower($_POST['code']) == strtolower($_SESSION['code'])) {
        echo 'Valid code';
    } else {
        echo 'Invalid code';
    }
}
?>
<form method="post">
    <input type="text" name="code" placeholder="Enter code">
    <input type="submit" value="Submit">
</form>

以上模板代码使用了 PHP 的 strtolower 函数来将验证码字符串转换为小写字母,并将其与用户提交的值进行比较。

总结

验证码是安全性的重要组成部分,通过使用 PHP 的内置函数和 GD 库,可以很容易地创建验证图像。 在几乎所有 Web 应用程序中使用验证码以确保安全性是值得考虑的。