teampanfu / laravel-hcaptcha
一个用于显示和验证hCaptcha的Laravel包。
v1.1.2
2023-03-30 14:14 UTC
Requires
- php: ^7.2|^8.0
- guzzlehttp/guzzle: ^6.2|^7.2
Requires (Dev)
- phpunit/phpunit: ^10.0
README
一个专门设计用于直接将hCaptcha集成到Laravel中的包。
安装
要安装,请使用Composer
composer require teampanfu/laravel-hcaptcha
手动设置
从Laravel 5.5开始,包可以通过包发现自动发现。所以如果您使用的是较新版本,可以跳过这些步骤。
将以下内容添加到您的config/app.php
'providers' => [ ... /* * Package Service Providers... */ Panfu\Laravel\HCaptcha\HCaptchaServiceProvider::class, ... ], 'aliases' => [ ... 'HCaptcha' => Panfu\Laravel\HCaptcha\Facades\HCaptcha::class, ... ],
然后发布配置文件
php artisan vendor:publish --provider="Panfu\Laravel\HCaptcha\HCaptchaServiceProvider"
配置
将您的网站添加到hCaptcha仪表板以获取站点密钥和密钥。
完成之后,将密钥添加到您的.env
文件
HCAPTCHA_SITEKEY=10000000-ffff-ffff-ffff-000000000001 HCAPTCHA_SECRET=0x0000000000000000000000000000000000000000
以下是我们默认使用的测试密钥。您不应该在生产环境中使用它们!
使用
显示
要显示小部件
{!! HCaptcha::display() !!}
您还可以在小部件上设置自定义属性
{!! HCaptcha::display(['data-theme' => 'dark']) !!}
或扩展类
{!! HCaptcha::display([ 'class' => $errors->has('email') ? 'is-invalid' : '', ]) !!}
脚本
要加载hCaptcha JavaScript资源
{!! HCaptcha::script() !!}
您还可以设置查询参数
{!! HCaptcha::script($locale, $render, $onload, $recaptchacompat) !!}
验证
要验证hCaptcha响应,请使用hcaptcha
规则
$request->validate([ 'h-captcha-response' => ['hcaptcha'], ]);
您可以省略required
规则,因为它已经内部检查过了。
自定义验证消息
将以下值添加到语言文件夹中的validation.php
'custom' => [ 'h-captcha-response' => [ 'hcaptcha' => 'Please verify that you are human.', ] ],
隐形验证码
您还可以使用隐形验证码,此时如果用户满足挑战条件,用户将只会看到一个hCaptcha挑战。
最简单的方法是将按钮绑定到hCaptcha
{!! HCaptcha::displayButton() !!}
这将生成一个带有h-captcha
类和站点密钥的按钮。但您仍然需要一个按钮的回调
<script> function onSubmit(token) { document.getElementById('my-form').submit(); } </script>
默认情况下,onSubmit
被指定为回调,但您可以轻松地更改它(包括按钮的文本)
{!! HCaptcha::displayButton('Submit', ['data-callback' => 'myCustomCallback']) !!}
您还可以设置其他自定义属性,包括class
。
在不使用Laravel的情况下使用
该包设计成可以在不使用Laravel的情况下使用。以下是如何使用它的一个示例
<?php require_once 'vendor/autoload.php'; use Panfu\Laravel\HCaptcha\HCaptcha; $sitekey = '10000000-ffff-ffff-ffff-000000000001'; $secret = '0x0000000000000000000000000000000000000000'; $hCaptcha = new HCaptcha($sitekey, $secret); if (! empty($_POST)) { var_dump($hCaptcha->validate($_POST['h-captcha-response'])); exit; } ?> <form method="POST"> <?= $hCaptcha->display() ?> <button type="submit">Submit</button> </form> <?= $hCaptcha->script() ?>
测试
$ ./vendor/bin/phpunit
贡献
如果您发现错误或对功能有建议,请随时创建新问题或发起拉取请求。
我们很高兴接受每一份贡献!
许可
本包是开源软件,受MIT许可许可。