thashendran / laravel-recaptcha
轻松将 reCAPTCHA 添加到您的 Laravel 项目中
dev-main
2024-04-19 15:20 UTC
Requires
- guzzlehttp/guzzle: ~6.0
Requires (Dev)
- mockery/mockery: ^1.1
- orchestra/testbench: ~3.0
- phpunit/phpunit: ^7.2
This package is not auto-updated.
Last update: 2024-09-21 16:03:13 UTC
README
此包允许您轻松地将 reCAPTCHA 添加到您的 Laravel 项目中。
安装
使用 composer 安装
composer require arjasco/laravel-recaptcha
如果您的 Laravel 版本不支持自动发现,请将服务提供者添加到您的 app.php
配置文件中。
'providers' => [ ... Arjasco\LaravelRecpatcha\RecaptchaServiceProvider::class, ],
将配置文件发布到您的项目中。
php artisan vendor:publish --provider="Arjasco\LaravelRecaptcha\RecaptchaServiceProvider"
将您的网站密钥和密钥添加到 recaptcha.php
。
return [ 'sitekey' => env('RECAPTCHA_SITEKEY'), 'secret' => env('RECAPTCHA_SECRET') ]
使用方法
表单嵌入
使用辅助函数 recaptcha()
将 HTML 嵌入到您的表单中。
<form action="/contact" method="POST"> <input type="text" name="full_name" value=""/> <input type="text" name="email" value=""/> <textarea type="text" name="message"></textarea> <button>Send</button> {!! recaptcha() !!} </form>
或者,如果您正在使用 Blade,可以使用 @recaptcha
指令
<form action="/contact" method="POST"> ... @recaptcha </form>
您也可以向函数传递许多选项以进一步自定义嵌入。
<form action="/contact" method="POST"> ... {!! recaptcha(['theme' => 'dark', 'size' => 'compact']) !!} <!-- Or using the blade directive.. --> @recaptcha(['theme' => 'dark', 'size' => 'compact']) </form>
有关更多选项的表格,请参阅这里。在选项数组中使用时,省略每个选项的 data-
部分。
验证
将 recaptcha
规则添加到您要验证的请求的验证器上。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class ContactController extends Controller { public function send(Request $request) { $this->validate($request, [ 'g-recaptcha-response' => 'recaptcha' ]); } }
错误
验证过程中产生的任何错误都将添加到 recaptcha
键。例如,如果您只想获取第一个错误,您可能需要进行如下操作:
<div class="form__errors> {!! $errors->first('recaptcha', '<span>:message</span>'); !!} </div>
自动脚本注入
如果您想自动将脚本注入到您的 HTML head 标签中,只需将中间件添加到任何 GET 路由,这是可选的,您可能希望自己包含脚本。
在您的 Kernel.php
文件中注册中间件。
<?php /** * The application's route middleware. * * These middleware may be assigned to groups or used individually. * * @var array */ protected $routeMiddleware = [ ... 'recaptcha' => \Arjasco\LaravelRecaptcha\RecaptchaMiddleware::class, ];
在您的 GET 路由上使用中间件。
Route::get('/contact', 'ContactController@index')->middleware('recaptcha');