使用 PHP实现了行为验证码AJ-Captcha
这个类库使用 PHP实现了行为验证码。基于gd扩展生成滑动验证码和文字验证码。允许 phper定制验证码规则,并且不再使用 curl来请求第三方验证。
PHP实现: ajcaptcha: 这是一个基于AJ-Captcha行为验证码的PHP类库
官方预览效果
注意事项
-
你需要打开 gd、 openssl扩展
-
PHP版本至少需要7.1
-
此软件包自带缓存,如有需要请自行更换
-
anji-plus/captcha前端默认请求头是 application/json 需替换为 application/x-www-form-urlencode
-
滑动验证图响应时间慢?
性能慢的主要原因是受php GD库的imagecolorat函数与imagesetpixel函数性能的影响
- 您可以尝试将修改内存
ini_set('memory_limit', '256M')
- 将本包升级到1.1.x版本,开启像素缓存
block_puzzle.is_cache_pixel = true
, 若还是性能还是慢,则将干扰图片关闭block_puzzle.is_interfere => false
- 您可以尝试将修改内存
如何使用
test 目录下示例了三种使用方式,phper可以参考使用。查看demo
本软件包需要配合composer一起使用
-
非框架使用的场景,直接使用git下载这个软件包。然后执行composer命令
composer install
安装本软件包依赖,接着手动引入对应的 service层文件即可(同test目录里的原生引用方式)。 -
基于框架使用的场景,输入安装命令
composer require fastknife/ajcaptcha
(稳定版) 或者composer require fastknife/ajcaptcha dev-master
(最新版) ,建议使用composer阿里源(https://mirrors.aliyun.com/composer
)- 支持各种前沿框架(ThinkPHP, YII, Laravel, Hyperf,IMI,Swoft,EasySwoole)
- 本软件包内,未使用单例、注册树(容器)模式,不含任何全局变量,基于swoole开发的同学不用担心内存泄露。
项目结构
本软件包基于整洁架构理念,设计了下文的目录结构。Domain(领域层)作为内层同心圆承担所有业务逻辑功能,Service(服务层)并向最外层Controller(需自行实现)提供粗颗粒度服务。
区别于DDD(领域驱动设计),本软件包的领域层不含Entity(实体),以Logic(逻辑层)实现单元逻辑,为了方便管理作者将逻辑层的数据处理与图形处理分隔,以达到整洁效果。
AJ-Captcha for php │ ├─resources 资源 │ │ │ ├─defaultImages 图片资源 │ │ │ └─fonts 字体 │ ├─src 源码 │ │ │ ├─Domian 领域层 │ │ │ ├─Exception 异常 │ │ │ ├─Service 服务层 │ │ │ ├─ Utils工具类 │ │ │ └─ config.php 配置参考 └─test 测试实例 │ ├─thinkphp thinkphp框架测试示例 │ ├─laravel laravel框架测试示例 │ └─*.php 原生测试文件 配置文件
若此软件对您有所帮助,您可以点右上角 💘Star💘支持
赞赏码


非学,无以致疑;非问,无以广识
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2021-10-20 Centos 根据端口查看占用进程 根据进程查看占用端口
2021-10-20 Elasticsearch 之Mapping设置
2021-10-20 实战!聊聊PHP如何使用 ElasticSearch 做搜索
2018-10-20 最完美解决Nginx部署ThinkPHP项目的办法
2018-10-20 最完美解决Nginx部署ThinkPHP项目的办法
2018-10-20 nginx 80端口重定向到443端口
2018-10-20 nginx 80端口重定向到443端口