Download the PHP package fastknife/ajcaptcha without Composer
On this page you can find all versions of the php package fastknife/ajcaptcha. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download fastknife/ajcaptcha
More information about fastknife/ajcaptcha
Files in fastknife/ajcaptcha
Package ajcaptcha
Short Description This is a behavior verification code PHP back-end implementation package
License GPL-3.0-only
Informations about the package ajcaptcha
AJ-Captcha for PHP
这个类库使用 PHP 实现了行为验证码(滑动拼图、点选文字)。 v2.0 版本基于 Strategy Pattern(策略模式) 彻底重构了底层架构,移除了第三方图像库依赖,引入了原生 GD 绘图与抗锯齿技术,带来了更极致的体验与更高的性能。
Java实现: https://gitee.com/belief-team/captcha
PHP实现: https://gitee.com/fastknife/aj-captcha
文档地址:https://ajcaptcha.beliefteam.cn/captcha-doc/captchaDoc/html.html
预览效果

✨ 核心特性 (v2.1)
- 轻量零依赖:彻底移除
intervention/image,完全基于 PHP 原生 GD 库,体积更小,兼容性更强(PHP 7.1 ~ 8.5+)。 - 极致抗锯齿 (Anti-Aliasing):
- 全新的
Drawing模式,抛弃了传统的图片模板抠图方案。 - 采用 6 倍超采样 (Super Sampling) + 高斯模糊 (Gaussian Blur) 技术实时绘制滑块。
- 生成的滑块边缘平滑细腻,自带内阴影与半透明质感,完美融合背景。
- 全新的
- 多形状支持:内置多种滑块形状,支持一键切换:
- 🧩 拼图 (
jigsaw) - ❤️ 红桃 (
red_heart) - ♠️ 黑桃 (
spade) - ♦️ 方片 (
diamond) - ♣️ 草花 (
club)
- 🧩 拼图 (
- Unicode 图标验证码:点击验证码支持 Unicode 图标,实现图文混合验证。图片上显示图标(如 ☕),前端提示显示文字说明(如
<杯子>),提升趣味性和安全性。 - 安全增强:
- 干扰图:滑动验证码支持随机生成干扰滑块(位置、形状随机),增加机器识别难度。
- 干扰字:点击验证码支持生成随机干扰文字。
- 智能布局:采用 随机坐标 + 碰撞检测算法,确保文字不重叠、不越界。
- 双模式兼容:保留了旧版"图片模板"模式 (
resource),老用户可无缝切换。
📸 效果预览
滑动验证码 (Drawing 模式)
(无需任何图片素材,纯代码实时绘制)
效果图占位:建议运行 testImage.php 查看实际效果
点击验证码
支持文字点选,自带干扰文字与随机布局。
🛠 安装
要求
- PHP >= 7.1
- ext-gd
- ext-openssl
Composer 安装
🚀 快速开始
1. 原生 PHP 使用
2. 框架集成
本库无任何全局变量与单例依赖,完美支持 ThinkPHP, Laravel, Hyperf, Swoole 等现代框架。只需在控制器中实例化 Service 即可。
⚙️ 详细配置说明
在 src/config.php 中进行配置:
框架缓存集成详解
默认使用的 \Fastknife\Utils\CacheUtils 是一个基于 ThinkPHP 文件缓存改写的轻量级缓存驱动。它会在项目工作目录下自动创建 runtime/cache 目录来存储缓存文件。
- 轻量场景:如果文件缓存符合您的目录权限要求,且项目单机运行,您完全可以继续使用内置缓存,无需配置。
- 高性能/分布式:如果您追求更高的性能(如 Redis)或运行在分布式环境中,强烈建议替换为框架自带的缓存驱动或外部缓存引擎。
1. 方法映射 (适配非 PSR-16 框架)
本库默认期望缓存驱动遵循 PSR-16 规范。如果您的框架缓存方法名不同(例如 ThinkPHP 5.0 使用 rm 而不是 delete),您需要通过 method 配置项进行映射:
2. 常用框架配置示例
Laravel / Lumen:
ThinkPHP 6:
Hyperf:
💻 前端集成注意事项
前端请求时,请确保 Content-Type 设置为 application/x-www-form-urlencoded。
Axios 示例:
🏗 架构设计
v2.0 引入了策略模式 (Strategy Pattern),将滑块的生成逻辑解耦。
核心目录结构
绘图原理 (Drawing Mode)
- 大画布绘制:系统首先创建一个 6 倍于目标尺寸的透明画布。
- 矢量路径:使用
imagefilledpolygon等函数在画布上绘制高精度的矢量形状(拼图、心形等)。 - 光影渲染:在形状内部绘制半透明的内阴影、外发光,模拟立体感。
- 高斯模糊:应用轻微的高斯模糊 (
IMG_FILTER_GAUSSIAN_BLUR) 柔化边缘。 - 下采样:使用
imagecopyresampled将大图缩放回原尺寸,生成高质量的 Alpha Mask。 - 混合渲染:利用 Alpha Blending 将 Mask 与背景图混合,实现完美的抠图效果。
🧪 开发环境快速启动
在本仓库中已内置 test/ 目录作为本地联调与演示入口,使用 PHP 内置开发服务器即可快速启动。
准备
-
安装依赖:在项目根目录执行
- 确认 PHP 环境满足要求:
PHP >= 7.1,扩展ext-gd、ext-openssl可用
启动服务
-
在项目根目录运行(以 8001 端口为例):
- 浏览器访问:
- 前端演示页:
http://localhost:8001/index.html - 滑动/点击验证码图像直出调试:
http://localhost:8001/testImage.php(点击验证码:加上?mode=word) - 当前渲染尺寸检查:
http://localhost:8001/inspectSizes.php
- 前端演示页:
本地接口说明
test/ 目录已提供最小后端接口,前端 index.html 的交互将直接请求这些接口:
- 获取验证码:
GET /get.php?captchaType=blockPuzzle或GET /get.php?captchaType=clickWord(f:\php-code\aj-captcha\test\get.php:1) - 一次验证:
POST /check.php表单参数captchaType、token、pointJson(f:\php-code\aj-captcha\test\check.php:1) - 二次验证:
POST /verification.php- 方式一:参数
captchaVerification(推荐,来自一次验证返回值)(f:\php-code\aj-captcha\test\BlockPuzzleController.php:60) - 方式二:参数
token+pointJson(f:\php-code\aj-captcha\test\BlockPuzzleController.php:63)
- 方式一:参数
对应控制器实现可参考:
- 滑动验证码控制器:
test/BlockPuzzleController.php(f:\php-code\aj-captcha\test\BlockPuzzleController.php:7) - 点击验证码控制器:
test/ClickWordController.php(f:\php-code\aj-captcha\test\ClickWordController.php:9)
调试配置
开发时可直接修改 src/config.php 来观察不同效果:
- 切换绘制模式:
block_puzzle.mode = 'drawing' | 'resource'(原生绘图/旧版图片模板) - 形状类型:
block_puzzle.shape_type = 'jigsaw' | 'red_heart' | 'spade' | 'diamond' | 'club' - 干扰开关:
block_puzzle.is_interfere = true | false - 点击验证码干扰字与目标字数量:
click_word.distract_num、click_word.word_num - Unicode图标配置:
click_word.icons、click_word.icon_mode、click_word.max_icons
常见问题
- 图片不显示或异常:确认
ext-gd已启用;Windows 下可在php.ini中开启extension=gd。 - 接口 404:确认以
-t ./test作为站点根目录启动,且访问路径与上述接口一致。
📝 变更日志
查看 CHANGELOG.md
🤝 贡献
欢迎提交 Issue 和 Pull Request!如果你想添加新的滑块形状,只需实现 ShapeDrawerInterface 并在 ShapeFactory 中注册即可。
📄 License
MIT
All versions of ajcaptcha with dependencies
ext-gd Version *
ext-openssl Version *
ext-iconv Version *
ext-json Version *