基于PHP的网站验证码是一种安全机制,用于确认用户不是自动化的机器人。它通常在表单提交时显示,要求用户输入看到的字符或点击特定的图像。这有助于防止垃圾邮件和恶意攻击。
在PHP中,我们可以使用GD库来生成验证码,以下是一个简单的例子:
<?php session_start(); $text = rand(1000,9999); //生成一个4位的随机数 $_SESSION["verification"] = $text; //将验证码存储到session中 $image = imagecreatetruecolor(60, 30); //创建一个60*30的空白图片 $background_color = imagecolorallocate($image, 255, 255, 255); //设置背景颜色为白色 $text_color = imagecolorallocate($image, 0, 0, 0); //设置文字颜色为黑色 imagestring($image, 5, 5, 5, $text, $text_color); //在图片上添加文字 header("ContentType: image/jpeg"); //设置输出头信息 imagejpeg($image); //输出图片 imagedestroy($image); //销毁图片 ?>
在这个例子中,我们首先生成了一个4位的随机数作为验证码,并将其存储到session中,我们创建了一个60*30的空白图片,并设置了背景颜色和文字颜色,我们在图片上添加了文字,我们设置了输出头信息,并输出了图片。
下面是一个基本的PHP代码示例,用于生成一个包含验证码图片的HTML介绍,请注意,这个例子假设您已经有一个名为captcha.php
的文件,它负责生成验证码图片。
这里是如何在HTML介绍中嵌入验证码图片的代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF8"> <title>验证码示例</title> </head> <body> <table> <tr> <td>验证码:</td> <td> <img src="captcha.php" alt="验证码" /> <!提供一个用于重新加载验证码图片的链接 > <a href="#" onclick="document.getElementById('captcha').src='captcha.php?'+Math.random(); return false;">看不清?换一张</a> </td> </tr> <tr> <td>输入验证码:</td> <td> <!输入验证码的表单 > <form action="verify_captcha.php" method="post"> <input type="text" name="captcha" required> <input type="submit" value="提交"> </form> </td> </tr> </table> </body> </html>
在这个介绍中,我们有两行:
1、第一行显示验证码图片和一个链接,点击链接会通过JavaScript重新加载验证码图片,Math.random()
用于生成不同的请求,确保浏览器加载新的验证码图片而不是缓存中的。
2、第二行是一个简单的表单,允许用户输入他们看到的验证码,然后提交到verify_captcha.php
文件,该文件应该包含验证用户输入和验证码是否匹配的逻辑。
以下是captcha.php
的简化示例,它需要GD库来生成验证码图片:
<?php session_start(); // 启动新会话或恢复现有会话 // 设置内容类型 header('Contenttype: image/png'); // 创建图像资源 $image = imagecreatetruecolor(120, 40); // 分配颜色 $background = imagecolorallocate($image, 255, 255, 255); // 白色背景 $lineColor = imagecolorallocate($image, 64, 64, 64); // 灰色线条 $pixelColor = imagecolorallocate($image, 0, 0, 255); // 蓝色像素点 // 填充背景 imagefill($image, 0, 0, $background); // 添加干扰线 for ($i = 0; $i < 6; $i++) { imageline($image, rand(0, 120), rand(0, 40), rand(0, 120), rand(0, 40), $lineColor); } // 添加干扰像素 for ($i = 0; $i < 100; $i++) { imagesetpixel($image, rand(0, 120), rand(0, 40), $pixelColor); } // 创建验证码字符 $characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; $code = ''; for ($i = 0; $i < 4; $i++) { $code .= $characters[rand(0, strlen($characters) 1)]; } // 存储验证码到会话 $_SESSION['captcha'] = $code; // 在图像上输出验证码 imagestring($image, 5, 30, 15, $code, $lineColor); // 输出图像 imagepng($image); // 释放内存 imagedestroy($image); ?>
在verify_captcha.php
中,您需要检查用户输入的验证码与存储在会话中的验证码是否匹配,这里没有提供verify_captcha.php
的代码,因为它取决于您网站的具体逻辑和验证过程。
确保在使用上述代码时,您的PHP服务器已安装并启用GD库,否则无法生成验证码图片。
本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/10725.html