在开发PHP登录页面时,为了提高安全性,我们通常需要添加验证码功能,验证码可以有效防止恶意机器人登录和暴力破解密码,下面,我将详细为大家介绍如何在PHP登录页面中添加验证码。
我们需要准备一个生成验证码的PHP脚本,这个脚本会生成一个图片验证码,并保存验证码值到session中,以便后续登录时进行验证。
创建验证码生成脚本
新建一个名为 captcha.php 的文件,将以下代码复制到文件中:
<?php
session_start();
header("Content-Type:image/png");
//创建图像
$image = imagecreatetruecolor(100, 30);
//分配颜色
$bgcolor = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $bgcolor);
//生成随机验证码
$captcha_code = '';
for ($i = 0; $i < 4; $i++) {
$fontsize = 6;
$fontcolor = imagecolorallocate($image, rand(0, 120), rand(0, 120), rand(0, 120));
$data = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$fontcontent = substr($data, rand(0, strlen($data)), 1);
$captcha_code .= $fontcontent;
$x = ($i * 100 / 4) + rand(5, 10);
$y = rand(5, 10);
imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);
}
//保存验证码到session
$_SESSION['captcha'] = $captcha_code;
//添加干扰元素
for ($i = 0; $i < 200; $i++) {
$pointcolor = imagecolorallocate($image, rand(50, 200), rand(50, 200), rand(50, 200));
imagesetpixel($image, rand(1, 99), rand(1, 29), $pointcolor);
}
//输出图像
imagepng($image);
//销毁图像
imagedestroy($image);
?>
在登录页面中调用验证码
我们需要在登录页面中显示验证码图片,并验证用户输入的验证码是否正确。
新建一个名为 login.php 的文件,将以下代码复制到文件中:
<?php
session_start();
if (isset($_POST['submit'])) {
//获取用户输入的验证码
$captcha = $_POST['captcha'];
//判断验证码是否正确
if ($captcha == $_SESSION['captcha']) {
//验证码正确,继续后续的登录逻辑
echo '验证码正确,登录成功!';
} else {
//验证码错误
echo '验证码错误,请重新输入!';
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录页面</title>
</head>
<body>
<form action="login.php" method="post">
用户名:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
验证码:<input type="text" name="captcha" size="6"><br>
<img src="captcha.php" onclick="this.src='captcha.php?'+Math.random();" alt="点击刷新验证码"><br>
<input type="submit" name="submit" value="登录">
</form>
</body>
</html>
在上面的代码中,我们创建了一个简单的登录表单,并在表单中添加了一个验证码输入框和验证码图片,验证码图片的 src 属性设置为 captcha.php,每次点击图片都会重新生成一个验证码。
当用户提交表单时,我们会获取用户输入的验证码,并与session中保存的验证码进行比较,如果验证码正确,则继续执行后续的登录逻辑;如果验证码错误,则提示用户重新输入。
通过以上步骤,我们就成功在PHP登录页面中添加了验证码功能,这样,可以有效提高网站的安全性,防止恶意机器人登录,希望这个教程能对大家有所帮助!

