0

0

php-gd怎样生成验证码_php-gd动态验证码生成实例

爱谁谁

爱谁谁

发布时间:2025-10-12 09:07:01

|

809人浏览过

|

来源于php中文网

原创

使用PHP-GD生成验证码需先启用GD扩展,创建包含随机字符、干扰线和背景色的图像。通过session存储验证码值,前端用img标签调用并支持点击刷新,提交后在check.php中比对session值完成验证。

php-gd怎样生成验证码_php-gd动态验证码生成实例

使用 PHP-GD 生成验证码是常见的安全措施,用于防止机器人自动提交表单。通过 GD 扩展库,可以轻松创建包含随机字符、干扰线、背景色等的图片验证码。下面是一个完整的动态验证码生成实例,包含代码说明和实现步骤。

1. 检查并启用 php-gd 扩展

确保你的 PHP 环境已开启 GD 扩展,否则无法生成图像。在 php.ini 中检查以下行是否启用:

extension=gd

保存后重启 Web 服务器(如 Apache 或 Nginx),然后运行 phpinfo() 查看 GD 是否启用。

2. 验证码生成核心逻辑

验证码通常包括:随机字符串、画布创建、文字绘制、干扰元素添加、输出图像并保存验证码值到 Session。

立即学习PHP免费学习笔记(深入)”;

下面是完整示例代码(保存为 captcha.php):

Vondy
Vondy

下一代AI应用平台,汇集了一流的工具/应用程序

下载
<?php
// 启动 Session 用于存储验证码值
session_start();
<p>// 设置图像尺寸
$width = 120;
$height = 40;</p><p>// 创建画布
$image = imagecreate($width, $height);</p><p>// 定义颜色(先定义背景色)
$bgColor = imagecolorallocate($image, 240, 240, 240); // 浅灰背景</p><p>// 文字颜色(随机深色)
$textColor = imagecolorallocate($image, mt_rand(0, 100), mt_rand(0, 100), mt_rand(0, 100));</p><p>// 干扰线颜色
$lineColor = imagecolorallocate($image, mt_rand(150, 200), mt_rand(150, 200), mt_rand(150, 200));</p><p>// 生成随机验证码文本(4位字母数字混合)
$chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789';
$captchaText = '';
for ($i = 0; $i < 4; $i++) {
$captchaText .= $chars[mt_rand(0, strlen($chars) - 1)];
}</p><p>// 将验证码存入 Session
$_SESSION['captcha'] = $captchaText;</p><p>// 在图像上绘制文字
$font = 5; // 使用内置字体
$x = 15;
$y = 25;
for ($i = 0; $i < 4; $i++) {
imagechar($image, $font, $x + $i * 20, $y, $captchaText[$i], $textColor);
}</p><p>// 添加几条干扰线
for ($i = 0; $i < 3; $i++) {
imageline($image, mt_rand(0, $width), mt_rand(0, $height), mt_rand(0, $width), mt_rand(0, $height), $lineColor);
}</p><p>// 输出图像头信息
header('Content-Type: image/png');</p><p>// 生成 PNG 图像
imagepng($image);</p><p>// 销毁图像资源
imagedestroy($image);
?></p>

3. 前端调用验证码图片

在 HTML 页面中通过 img 标签引用 captcha.php 即可显示验证码:

<form method="post" action="check.php">
    <img src="captcha.php" alt="验证码" style="cursor:pointer;" 
         onclick="this.src='captcha.php?'+Math.random();" />
    <br>
    <input type="text" name="captcha" placeholder="输入验证码" />
    <button type="submit">提交</button>
</form>

点击图片刷新验证码,通过时间戳避免浏览器缓存。

4. 验证用户输入

在 check.php 中验证用户输入是否与 Session 中的验证码一致:

<?php
session_start();
<p>if ($_POST['captcha'] === $_SESSION['captcha']) {
echo "验证码正确";
} else {
echo "验证码错误";
}
?></p>

注意:比较完成后可清空 Session 中的验证码,防止重复使用。

基本上就这些。这个实例实现了基础但实用的动态验证码功能,适合登录、注册等场景。可根据需要增加旋转文字、噪点、字体文件等增强安全性。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

248

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

522

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

610

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

244

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

714

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3618

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

56

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

72

2026.01.13

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

26

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 13.5万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.3万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 1.0万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号