在开发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登录页面中添加了验证码功能,这样,可以有效提高网站的安全性,防止恶意机器人登录,希望这个教程能对大家有所帮助!