fractal512 / captcha
非常简单的 Laravel 5 无状态验证码包。
Requires
- php: ^5.6|^7.2|^8.0
- ext-gd: *
- illuminate/config: ~5|^6|^7|^8
- illuminate/support: ~5|^6|^7|^8
Requires (Dev)
- mockery/mockery: ^1.0
- phpunit/phpunit: ^8.5
This package is auto-updated.
Last update: 2024-09-21 01:37:27 UTC
README
为 Laravel 5+ 提供一个非常简单的无状态验证码。基本上,这是一个简单的 Laravel 包,用于包裹我多年前编写的旧验证码脚本。
安装
您可以通过在项目的 composer.json
中要求 fractal512/captcha
包并设置 minimum-stability
为 dev
(Laravel 5 所需)来通过 Composer 安装验证码。
{ "require": { "laravel/framework": "5.0.*", "fractal512/captcha": "^1.0" }, "minimum-stability": "dev" }
然后使用 composer update
更新您的包或使用 composer install
安装。
或者使用 composer 安装此包
composer require fractal512/captcha
在 Windows 上,您需要在 php.ini 中包含 GD2 DLL php_gd2.dll
。您还需要包含 php_fileinfo.dll
和 php_mbstring.dll
来满足 fractal512/captcha
依赖项的要求。
Laravel 注册
在具有自动发现功能(Laravel 5.5+)的版本中不需要。在 config/app.php
的 providers
键中注册 Captcha Service Provider。
'providers' => [ // ... 'Fractal512\Captcha\CaptchaServiceProvider', ]
针对 Laravel 5.1+
'providers' => [ // ... Fractal512\Captcha\CaptchaServiceProvider::class, ]
在 config/app.php
的 aliases
键中注册验证码包的 facade。
'aliases' => [ // ... 'Captcha' => 'Fractal512\Captcha\Facades\Captcha', ]
针对 Laravel 5.1+
'aliases' => [ // ... 'Captcha' => Fractal512\Captcha\Facades\Captcha::class, ]
配置
发布包的 config.php
文件以应用自己的设置。
$ php artisan vendor:publish --provider="Fractal512\Captcha\CaptchaServiceProvider" --tag="config"
或者(Laravel 8+)
$ php artisan vendor:publish
然后输入 Fractal512\Captcha\CaptchaServiceProvider
服务提供者的编号。
config/captcha.php
文件的内容
return [ 'characters' => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', 'expire' => 300, 'attempts' => 10, 'default' => [], 'numbers' => [ 'characters' => '0123456789' ], 'letters' => [ 'characters' => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' ], 'uppercase' => [ 'characters' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' ], 'lowercase' => [ 'characters' => 'abcdefghijklmnopqrstuvwxyz' ] ];
配置选项
characters
- 用于验证码的字符集(可用的预设:default
、numbers
、letters
、uppercase
、lowercase
);expire
- 验证码过期时间(秒);attempts
- 每分钟刷新验证码图像的尝试次数。
可以包含其他选项
fontsDirectory
- 自定义字体目录的完全限定路径(不带尾部斜杠);fontFile
- 位于fontsDirectory
中的自定义 TTF 字体文件名;captchaDirectory
- 存储验证码文件的目录的完全限定路径(不带尾部斜杠)。
使用示例
// base_path() . "/routes/web.php" Route::any('captcha-example', function() { if (request()->getMethod() == 'POST') { $rules = ['captcha' => 'required|captcha']; $validator = validator()->make(request()->all(), $rules); if ($validator->fails()) { echo '<p style="color: #ff0000;">Verification failed!</p>'; } else { echo '<p style="color: #00ff00;">Verification passed!</p>'; } } $form = '<form method="post" action="">'; $form .= '<input type="hidden" name="_token" value="' . csrf_token() . '">'; $form .= '<p>'; $form .= captcha_img('default', ['id' => 'captcha-img']); $form .= '<a href="#" onclick="document.getElementById(\'captcha-img\').src = \'/captcha/default?\' + Date.now()">Refresh</a>'; $form .= '</p>'; $form .= '<p><input type="text" name="captcha"></p>'; $form .= '<p><button type="submit" name="check">Check captcha</button></p>'; $form .= '</form>'; return $form; });
辅助函数和 Facade
返回图片
captcha();
或使用 facade
Captcha::create();
返回 URL
captcha_src();
或使用 facade
Captcha::src('default');
返回 HTML
captcha_img();
或使用 facade
Captcha::img();
要使用其他配置
captcha_img('numbers'); Captcha::img('uppercase');
等等。
链接
- 包装脚手架是从 Captcha for Laravel 5/6/7 中获取的