php案例:验证码登录

2024-02-17 09:30:37 浏览数 (18)

前言

学习学习验证码登录案例

一、验证码是什么?

是一种用于区分计算机和人类用户的技术。它通常以图像或声音的形式出现,要求用户在提交表单或访问受限页面之前输入正确的信息。

验证码的目的是防止自动化程序(如恶意机器人)对网站进行滥用或恶意操作。通过要求用户正确识别和输入验证码,可以增加对真实用户的验证,并减少对自动化程序的影响。

二、使用步骤

1.引入库

代码如下(示例):

cyg.php

代码语言:javascript复制
<?php
session_start();
$code = yzm(6);
$_SESSION['captcha'] = $code;

// 创建画布
$imageWidth = 120;
$imageHeight = 50;
//定义验证码图像的宽度高度,单位为px.生成验证码的画布
$image = imagecreatetruecolor($imageWidth, $imageHeight);

//imagesavealpha()函数设置图像资源是否保存完整的 alpha 通道信息。在这里,将其设置为 true,以保留透明通道的信息。
imagesavealpha($image, true);
//用于创建一个具有指定 RGBA 颜色值的颜色标识符。在这里,我们使用 (0, 0, 0) 表示黑色,并设置 alpha 通道为 127,表示半透明度。
$transparentColor = imagecolorallocatealpha($image, 0, 0, 0, 127);
//imagefill()函数用于填充图像资源的区域。在这里,我们使用之前创建的半透明颜色 $transparentColor 填充整个图像,从坐标 (0, 0) 开始。
imagefill($image, 0, 0, $transparentColor);
//imagecolorallocatealpha()函数用于创建一个具有指定 RGBA 颜色值的颜色标识符。在这里,我们使用 (0, 0, 0) 表示黑色,并将 alpha 通道设置为 255,表示完全不透明。
$textColor = imagecolorallocatealpha($image, 0, 0, 0, 255);

/*这样,在验证码图像中,背景将是透明的,而验证码文本将以黑色显示。*/
// 在画布上写入验证码字符串
$fontSize = 20;
$x = 10;
$y = 25;
imagestring($image, $fontSize, $x, $y, $code, $textColor);



// 这行代码设置响应头部,将内容类型设置为image/png,表示输出的是PNG格式的图像。
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);

//这两行代码将生成的图像以PNG格式输出到浏览器,并销毁图像资源以释放内存。
// 生成随机验证码字符串的函数
function yzm($lengths) {
    $string = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $code = '';
    for ($i = 0; $i < $lengths; $i  ) {
        $code .= $string[mt_rand(0, strlen($string) - 1)];
    }
    return $code;
}
?>

login.php

代码语言:javascript复制
<!DOCTYPE html>
<html>
<head>
    <title>Login</title>
</head>
<body>
    <h2>Login</h2>
    <form method="POST" action="login.php">
        <label for="captcha">Captcha:</label>
        <input type="text" name="captcha" id="captcha" required>
        <img src="cyg.php" alt="Captcha"><br><br>
        <input type="submit" value="Login">
    </form>
</body>
</html>
<?php
session_start();
if($_SESSION['captcha']==$_POST['captcha'])
{
        echo "验证码登录成功!";
        exit();
}
echo "登录失败";
?>

效果

------

总结

写完了谢谢大家

1 人点赞