mostafaznv / recaptcha
Laravel 包用于 Google Recaptcha v3
1.1.4
2021-02-25 16:12 UTC
Requires
- php: >=5.6.4
- guzzlehttp/guzzle: 6.* || 7.*
- laravel/framework: 5.3.* || 5.4.* || 5.5.* || 5.6.* || 5.7.* || 5.8.* || 6.* || 7.* || 8.*
README
Laravel 包用于 Google Recaptcha v3
Recaptcha 的一些功能
- 可配置和自定义
- 回调函数
- 服务容器
- 自动发现(仅限 Laravel 5.5+)
要求
- Laravel 5.3 或更高版本
- PHP 5.6.4 或更高版本
安装
-
使用 composer 安装此包
composer require mostafaznv/recaptcha
-
在 config/app.php 中注册提供者和外观(对于 Laravel 5.3 和 5.4 是必需的)
'providers' => [ ... Mostafaznv\Recaptcha\RecaptchaServiceProvider::class, ], 'aliases' => [ ... 'Recaptcha' => Mostafaznv\Recaptcha\Facades\Recaptcha::class, ]
-
发布配置和视图
php artisan vendor:publish --provider="Mostafaznv\Recaptcha\RecaptchaServiceProvider"
-
完成
配置
将 RECAPTCHA_SITE_KEY
和 RECAPTCHA_SECRET_KEY
添加到 .env
文件中
RECAPTCHA_SITE_KEY=your-site-key RECAPTCHA_SECRET_KEY=your-secret-key
要设置更多,请打开 config/recaptcha.php 并设置自己的配置。
return [ 'secret_key' => env('RECAPTCHA_SECRET_KEY'), 'site_key' => env('RECAPTCHA_SITE_KEY'), 'is_active' => true, 'score' => 0.5, 'options' => [ 'timeout' => 5.0, ] ];
用法
-
渲染 JS
{!! Recaptcha::renderJs() !!}
-
创建 Recaptcha 字段
这是一个隐藏的输入字段,它将被 recaptcha 令牌填充。
{!! Recaptcha::field('login') !!}
-
验证
$validate = Validator::make(Input::all(), [ 'g-recaptcha-response' => 'required|recaptcha:login' ]);
-
完成
自定义验证消息
将以下值添加到 validation
语言文件中的 custom
数组中
'custom' => [ 'g-recaptcha-response' => [ 'required' => 'Please verify that you are not a robot.', 'recaptcha' => 'Captcha error! try again later or contact site admin.', ], ],
然后检查表单中的 captcha 错误
@if ($errors->has('g-recaptcha-response')) <p>{{ $errors->first('g-recaptcha-response') }}</p> @endif
手动验证分数
或者,您可以得到分数并采取相应的行动
$token = $request->get('g-recaptcha-response'); $action = 'home'; $score = 0; $score = app('recaptcha')->verify($token, $action, $score); if($score > 0.7) { // is valid } else if($score > 0.3) { // require additional email verification } else { return abort(400, 'Bad request'); }
方法
RenderJs
Field
Validation
完整示例
视图
<html> <head> <title>Recaptcha v3</title> {!! Recaptcha::renderJs('fa') !!} </head> <body> <form action="{{ url('recaptcha-page') }}" method="post"> {!! csrf_field() !!} {!! Recaptcha::field('home', 'g-recaptcha-response', ['id' => 'recaptcha-id', 'class' => 'form-element'], 'recaptchaCallback') !!} <button type="submit">Submit</button> </form> @if($errors->any()) @foreach($errors->all() as $key => $error) <p>{{ $key }} - {{ $error }}</p> @endforeach @endif <script> function recaptchaCallback(token) { console.log('token retrieved:'); console.log(token); } </script> </body> </html>
控制器
class DevController extends Controller { public function verifyRecaptcha(Request $request) { $this->validate($request, ['g-recaptcha-response' => 'required|recaptcha:home,0.5']); dd($request->all()); } }
迁移指南
从 1.0.0 到 1.1.0
- 删除
app/recaptcha.php
文件 - 删除
resources/views/vendor/recaptcha
目录 - 再次发布供应商
php artisan vendor:publish --provider="Mostafaznv\Recaptcha\RecaptchaServiceProvider"
变更日志
有关项目的完整历史记录,请参阅 变更日志。
许可
此软件根据 MIT 许可证 (MIT) 发布。
(c) 2018 Mostafaznv,版权所有。