chenjiangbin / captcha
图形验证码验证
v0.1.0
2025-06-23 09:00 UTC
Requires
- php: >=7.4
README
一个基于 PHP 的拼图验证码生成器,支持前后端交互验证、随机图片、偏移容差校验、token 会话存储等功能。
支持拼图验证码校验,兼容 PHP >=7.4
✨ 特性
- ✔️ 支持图形拼图验证码
- ✔️ 可自定义验证码图片、尺寸、颜色
- ✔️ 支持 session 验证偏移
- ✔️ 支持前后端配合使用
- ✔️ Composer 一键集成
💡 安装
通过 Composer 安装:
composer require chenjiangbin/captcha
# 可查看 public 中的demo.php use Chenjiangbin\CaptchaPuzzle\CaptchaGenerator; $captcha = (new CaptchaGenerator()) ->setIsToken(true) ->setImgWidth(50) ->setImgHeight(50) ->setTargetWidth(300) ->setTargetHeight(200) ->setCaptchaImages(['path/to/img1.png', 'path/to/img2.jpg']); $data = $captcha->create();
{ "bg": "data:image/png;base64,...", "puzzle": "data:image/png;base64,...", "offset": 123, "token": "token_xxx", "width": 50, "height": 50, "top": 34 }
字段名 | 类型 | 描述 |
---|---|---|
bg |
string |
背景图的 Base64 编码,包含缺口的主图。格式:data:image/png;base64,... |
puzzle |
string |
滑块图的 Base64 编码,缺口对应的滑块图。格式:data:image/png;base64,... |
offset |
int |
滑块原始的正确横向偏移位置(用于后端验证)。单位:像素 |
token |
string |
验证码唯一标识,前端验证时需带上,用于服务端匹配。 |
width |
int |
滑块的宽度,单位:像素 |
height |
int |
滑块的高度,单位:像素 |
top |
int |
滑块在背景图中的垂直位置(top 值),单位:像素 |
$isValid = $captcha->checkOffset($token, $userOffset);
方法 | 描述 |
---|---|
setIsToken(true) | 是否启用 token 存储偏移 |
setTokenKey('xxx_') | 自定义 token 前缀 |
setImgWidth(50) | 设置拼图宽度 |
setImgHeight(50) | 设置拼图高度 |
setTargetWidth(300) | 设置背景图宽度 |
setTargetHeight(200) | 设置背景图高度 |
setCaptchaImages([]) | 设置验证码图片(数组或单张) |
setBgRgb(r,g,b,a) | 设置背景颜色 |
setBgBorderRgb(r,g,b,a) | 设置边框颜色 |
demo
# 进入到public目录 cd captcha-puzzle/public # 运行 php -S localhost:8000 # 访问 http://localhost:8000/index.html