chenjiangbin/captcha

图形验证码验证

v0.1.0 2025-06-23 09:00 UTC

This package is auto-updated.

Last update: 2025-06-23 09:59:52 UTC


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

demo示例