Captcha / Poster / PHP + Rust

验证码与海报一个包就够了

三种验证码加十四种海报元素,纯 PHP 生成,六种框架共用一套 API。

poster-php 项目宠物 Posty,poster 的项目宠物

验证码与海报共用一套核心

poster-php 把点击、旋转、滑块三种人机校验与链式海报生成放进同一个包,图片与答案全部由 PHP 生成,不依赖第三方服务。

十四种海报元素覆盖文字、图片、二维码、表格、图表与日历,图像驱动可在 GD 与 ImageMagick 之间切换,存储支持 File、Session、Redis 与 PSR-16。

  • 点击 / 旋转 / 滑块
  • 14 种海报元素
  • GD / ImageMagick
3验证码类型
14海报元素
6框架适配
poster-php 项目宠物 Posty 的 微笑 表情

Posty

一只由海报本体与验证码配件组成的吉祥物:左手举二维码卡片,右手举滑块拼图。

出图与验证,两件事都交给我。

从人机校验到整张海报

生成、校验、排版、渲染都在同一个包里完成。

三种验证码

点击、旋转、滑块三种交互,支持随机切换、难度与容差配置。

十四种海报元素

文字、图片、二维码、表格、图表、日历等元素链式叠加。

纯 PHP 二维码

内置 Model 2 编码器,支持 v1 到 v40 与 L/M/Q/H 容错级别。

模板渲染

JSON 模板配合变量替换,builder 可导出再导入。

六框架适配

Laravel、ThinkPHP、Webman、Hyperf、Yii2、Yii3 共用核心。

验证安全

一次性校验、防暴力、有效期、会话限流与可选轨迹校验。

同一能力,Rust 版本

PHP 版本之外,也可以直接使用 Rust 实现。

Rust v2.0.0 Rust 1.85 / crate

poster-rust

Rust 版验证码与海报生成

把三种验证码与十四种海报元素带到 Rust,纯 Rust 图像栈,附 8 个框架集成。

  • 三种验证码
  • 14 种海报元素
  • 8 个框架集成
查看 Rust 仓库

功能是这样长出来的

每一次发布都对应一段真实提交。

v1.4.3

驱动收尾与多语言同步

修复 Imagick 遮罩与圆形裁剪的 alpha 通道,同步 13 语言文档。

v1.4.1

滑块支持凹凸拼图

新增 jigsaw 形状,四边随机凸凹,缺口与拼图块共用同一轮廓。

v1.4.0

Yii2 与 Yii3 适配

新增两个 Yii 框架适配,核心能力在六种框架间保持一致。

v1.3.1

原生入口与安全加固

落地 native.php、二维码编码器重写、会话限流与轨迹校验。

版本日志

最近的发布记录,完整列表在 GitHub Releases。

最新 v1.4.3 全部版本
v1.4.32026-10-05

修复 Imagick 无 alpha 来源的遮罩与圆形裁剪,同步多语言文档。

v1.4.22026-10-05

ImagickDriver 遮罩与圆形裁剪修复,补建 alpha 通道。

v1.4.12026-10-05

滑块验证新增凹凸拼图,13 语言文档同步配置与图表。

v1.4.02026-09-29

新增 Yii2 与 Yii3 适配,12 语言文档同步。

v1.3.12026-09-29

补齐原生 PHP 入口、验证码安全加固与二维码编码器重写。

v1.3.02026-09-25

统一多语言文档入口,补齐全语言链接与字符兜底。

安装与使用

先安装,再跑一个最小示例。

PHP >= 8.0 / GD完整 README
安装
composer require erikwang2013/poster-php
最小示例
$result = captcha_create('click');
$pass = captcha_verify($result['key'], 'click', [[120, 80], [200, 150], [310, 95]]);

$builder = poster_create(750, 1334);
$builder->background('#FFFFFF');
$builder->addText('新品首发', ['x' => 80, 'y' => 120, 'size' => 48, 'color' => '#333333']);
$builder->save('/output/poster.jpg', 90);

Posty 的十二种表情

鼠标停一停,它会换一种心情。

搜索本站

输入关键词,例如“上传”“迁移”“JWT”。