teampanfu/laravel-hcaptcha

一个用于显示和验证hCaptcha的Laravel包。

v1.1.2 2023-03-30 14:14 UTC

This package is auto-updated.

Last update: 2024-09-17 02:03:48 UTC


README

Visit hCaptcha.com

Latest Version Total Downloads Software License

一个专门设计用于直接将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许可许可。