esyede/hcaptcha-laravel

将 hCaptcha 集成到您的 Laravel 应用程序中。

v1.0.2 2024-06-26 21:50 UTC

This package is auto-updated.

Last update: 2024-09-26 22:29:49 UTC


README

将 hCaptcha 集成到您的 Laravel 应用程序中。

安装

使用 Composer 安装 Composer

composer require esyede/hcaptcha-laravel

发布配置文件

php artisan vendor:publish --provider="Esyede\Laravel\HCaptcha\HCaptchaServiceProvider"

设置

hCaptcha 控制台 注册并添加您的网站以获取网站密钥和密钥。

然后将这些添加到您的 .env 文件中

HCAPTCHA_SITEKEY=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
HCAPTCHA_SECRET=0x0000000000000000000000000000000000000000

用法

显示

要显示小部件

{!! HCaptcha::display() !!}

您还可以在小部件上设置 自定义属性

{!! HCaptcha::display(['data-theme' => 'dark']) !!}

或自定义 CSS 类

{!! 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 Esyede\Laravel\HCaptcha\HCaptcha;

$sitekey = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX';
$secret = '0x0000000000000000000000000000000000000000';
$guzzleOptions = [
    // 'verify' => false,
];
$hCaptcha = new HCaptcha($sitekey, $secret, $guzzleOptions);

if (!empty($_POST)) {
    var_dump($hCaptcha->validate($_POST['h-captcha-response']));
    exit;
}

?>

<form method="POST">
    <?php echo $hCaptcha->display() ?>
    <button type="submit">Submit</button>
</form>

<?php echo $hCaptcha->script() ?>

许可证

此包在 MIT 许可证 下发布。