0

0

PHP如何生成简单数字验证码_PHP生成数字验证码方法【代码】

絕刀狂花

絕刀狂花

发布时间:2025-12-24 21:19:02

|

757人浏览过

|

来源于php中文网

原创

php数字验证码有四种实现方式:一、gd库生成png图片;二、base64内联svg字符串;三、gd加干扰线增强安全;四、api接口返回json数据供前端动态显示。

php如何生成简单数字验证码_php生成数字验证码方法【代码】

如果您需要在PHP项目中实现用户登录或注册时的简单数字验证码功能,则可以通过生成随机数字并将其绘制为图片来完成。以下是几种不同的实现方法:

一、使用GD库生成纯数字验证码图片

该方法利用PHP内置的GD图像处理扩展,创建一个背景色可调、字体大小适中的PNG格式验证码图片,并将四位纯数字写入其中。验证码数字同时存储于session中供后续校验。

1、开启session并生成4位随机数字:
session_start();
$code = str_pad(rand(0, 9999), 4, '0', STR_PAD_LEFT);
$_SESSION['captcha'] = $code;

2、创建200×60像素的画布:
$image = imagecreate(200, 60);
$bg = imagecolorallocate($image, 240, 240, 240);

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

3、分配文字颜色并写入数字:
$text_color = imagecolorallocate($image, 50, 50, 50);
imagestring($image, 5, 50, 20, $code, $text_color);

4、输出PNG图片头信息并显示:
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);

二、不依赖GD库的base64内联验证码字符串方案

该方法避开图像生成,直接生成可嵌入HTML img标签的base64编码数字字符串,适用于无GD扩展环境或需快速部署的轻量场景。

1、生成4位数字并转换为base64字符串:
$code = str_pad(rand(0, 9999), 4, '0', STR_PAD_LEFT);
$_SESSION['captcha'] = $code;
$text = "数字:" . $code;
$base64 = 'data:image/svg+xml;base64,' . base64_encode('' . htmlspecialchars($text) . '');

2、在HTML中直接使用该base64字符串:
PHP如何生成简单数字验证码_PHP生成数字验证码方法【代码】' . $base64 . '" alt="验证码">

三、使用字符干扰线增强基础数字验证码安全性

在GD绘图基础上添加随机线条和噪点,提升OCR识别难度,但保持数字清晰可读,适用于对基础防爬有要求的表单验证场景。

1、创建画布并设定背景色:
$image = imagecreate(200, 60);
$bg = imagecolorallocate($image, 255, 255, 255);

2、生成并写入4位数字:
$code = str_pad(rand(0, 9999), 4, '0', STR_PAD_LEFT);
$_SESSION['captcha'] = $code;
$text_color = imagecolorallocate($image, 0, 0, 0);
imagestring($image, 5, 45, 20, $code, $text_color);

3、绘制5条随机位置干扰线:
for ($i = 0; $i   $x1 = rand(0, 200); $y1 = rand(0, 60);
  $x2 = rand(0, 200); $y2 = rand(0, 60);
  $line_color = imagecolorallocate($image, rand(180, 220), rand(180, 220), rand(180, 220));
  imageline($image, $x1, $y1, $x2, $y2, $line_color);
}

4、输出图片:
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);

四、基于Session+AJAX的前后端分离验证码校验流程

该方案将验证码生成与校验逻辑解耦,前端通过AJAX请求获取验证码值(非图片),后端将数字存入session并返回JSON响应,适用于Vue/React等单页应用集成。

1、创建captcha_api.php文件,输出JSON格式验证码:
session_start();
$code = str_pad(rand(0, 9999), 4, '0', STR_PAD_LEFT);
$_SESSION['captcha'] = $code;
header('Content-Type: application/json');
echo json_encode(['code' => $code]);

2、前端JavaScript发起GET请求获取验证码:
fetch('captcha_api.php')
  .then(r => r.json())
  .then(data => {
    document.getElementById('captcha-display').textContent = '' + data.code + '';
  });

3、表单提交时携带该数字至校验接口:
const input = document.getElementById('user_captcha').value;
if (input === document.getElementById('captcha-display').textContent) {
  // 允许提交
}

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

455

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

546

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

334

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

82

2025.09.10

ajax教程
ajax教程

php中文网为大家带来ajax教程合集,Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。php中文网还为大家带来ajax的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

166

2023.06.14

ajax中文乱码解决方法
ajax中文乱码解决方法

ajax中文乱码解决方法有设置请求头部的字符编码、在服务器端设置响应头部的字符编码和使用encodeURIComponent对中文进行编码。本专题为大家提供ajax中文乱码相关的文章、下载、课程内容,供大家免费下载体验。

170

2023.08.31

ajax传递中文乱码怎么办
ajax传递中文乱码怎么办

ajax传递中文乱码的解决办法:1、设置统一的编码方式;2、服务器端编码;3、客户端解码;4、设置HTTP响应头;5、使用JSON格式。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

124

2023.11.15

ajax网站有哪些
ajax网站有哪些

使用ajax的网站有谷歌、维基百科、脸书、纽约时报、亚马逊、stackoverflow、twitter、hacker news、shopify和basecamp等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

257

2024.09.24

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

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

精品课程

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

共137课时 | 13.3万人学习

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号