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,版权所有。