shetabit / captcha
Laravel 5 CAPTCHA 集成包
Requires
- php: >=5.4
- ext-gd: *
This package is auto-updated.
Last update: 2024-09-05 01:43:38 UTC
README
该包支持多种驱动程序,如果当前驱动程序列表中没有可用,您可以创建自定义驱动程序。
Laravel Captcha
这是一个用于 CAPTCHA 集成的 Laravel 包。该包支持 Laravel 5.4+
。
该包支持多种驱动程序,如果当前驱动程序列表中没有可用,您可以创建自定义驱动程序。
内容列表
可用驱动程序列表
- 简单:一个简单的图像 CAPTCHA。
- 其他正在开发中。
如果列表中没有,您可以创建自己的自定义驱动程序,请参阅
创建自定义驱动程序
部分。
安装
通过 Composer
$ composer require shetabit/captcha
配置
如果您使用 Laravel 5.5
或更高版本,则无需添加提供者和别名。
在您的 config/app.php
文件中添加以下两行。
# In your providers array. 'providers' => [ ... Shetabit\Captcha\Provider\CaptchaServiceProvider::class, ], # In your aliases array. 'aliases' => [ ... 'Payment' => Shetabit\Captcha\Facade\Captcha::class, ],
然后运行 php artisan vendor:publish
以在配置目录中发布 config/captcha.php
文件。
在配置文件中,您可以设置用于所有支付的 默认驱动程序
。但是,您也可以在运行时更改驱动程序。
选择您想要在应用程序中使用的网关。然后将其作为默认驱动程序,这样您就无需在每个地方指定它。但是,您也可以在一个项目中使用多个网关。
// Eg. if you want to use simple. (simple is the driver's name) 'default' => 'simple',
然后查看驱动程序数组中的配置。
'drivers' => [ 'simple' => [ 'middleware' => ['web'], // middleware 'route' => 'captcha', // route name 'characters' => 'ABCDEFGHIKJLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz123456789', 'width' => 230, 'height' => 70, 'foregroundColors' => ['2980b9','2E9FFF','FF1166','000000','22EE99'], 'backgroundColor' => '#FFF', 'letterSpacing' => 6, 'fontFamily' => resource_path('views/vendor/captchaSimpleDriver/assets/fonts/DroidSerif.ttf'), 'fontSize' => 30, 'length' => [4, 6], 'scratches' => [5, 8], 'sensitive' => false, 'sessionKey' => 'captcha', ], ... ]
如何使用
您需要两个步骤
- 在表单中添加 CAPTCHA
- 添加验证
在表单中添加 CAPTCHA
在您的代码中,如下所示使用它
<form> ... {!! captcha() !!} ... </form>
如果您使用 simple
驱动程序,可以轻松更改样式和 UI,只需查看 resources/views/vendor/captchaSimpleDriver.blade.php
验证
为了验证使用 CAPTCHA 的表单,您可以使用 captcha
验证规则。
以下示例展示了有关 CAPTCHA 验证的所需所有信息
... $request->validate([ 'email' => 'required|email', 'password' => 'required|string', 'captcha' => 'required|captcha', ]); ...
创建自定义驱动程序
首先,您必须在驱动程序数组中添加您驱动程序的名字,还可以指定您想要的任何配置参数。
'drivers' => [ 'simple' => [...], 'my_driver' => [ ... # Your Config Params here. ] ]
现在,您必须创建一个用于支付发票的驱动程序映射类。在您的驱动程序中,您只需扩展 Shetabit\Captcha\Abstracts\Driver
。
例如:您创建了一个类:App\Packages\CaptchaDriver\MyDriver
。
namespace App\Packages\CaptchaDriver; use Illuminate\Support\ServiceProvider; use Shetabit\Captcha\Abstracts\Driver; class MyDriver extends Driver { protected $serviceProvider; /** * Driver settings. * * @var object */ protected $settings; public function __construct(ServiceProvider $serviceProvider, $settings) { $this->serviceProvider = $serviceProvider; $this->settings = (object) $settings; } /** you must write your captcha generation logic in the below method. **/ public function generate() { ... // create captcha view and return it return View::make('yourCustomDriverView'); } /** you must write your captcha verification logic in the below method. **/ public function verify($token = null) { ... $storedToken = ... if (empty($this->settings->sensitive)) { $storedToken = mb_strtolower($storedToken); $token = mb_strtolower($token); } return $token == $storedToken; } }
一旦创建了这个类,您就必须在 captcha.php
配置文件的 map
部分中指定它。
'map' => [ ... 'my_driver' => App\Packages\CaptchaDriver\MyDriver::class, ]
注意:您必须确保 map
数组的键与 drivers
数组的键相同。
变更日志
请参阅 CHANGELOG 了解最近的变化。
贡献
请参阅 CONTRIBUTING 和 CONDUCT 了解详细信息。
安全
如果您发现任何安全问题,请通过电子邮件 hashemm364@gmail.com 而不是使用问题跟踪器。
鸣谢
许可证
麻省理工学院许可证(MIT)。请参阅许可文件以获取更多信息。