此包的最新版本(dev-master)没有提供许可信息。

dev-master 2020-04-05 13:40 UTC

This package is auto-updated.

Last update: 2024-09-05 23:22:54 UTC


README

Github Workflow Status Coverage Status Scrutinizer Code Quality SensioLabs Insight Github Issues

Packagist Packagist Release Packagist Downloads

shirshak55提供

请等待v1版本的使用。目前处于开发中。如果一切顺利,本月底前应该发布。

什么是hCaptcha?

hCaptcha是一种类似于CAPTCHA的系统,旨在确认计算机用户是人类。hCaptcha背后的团队拥有数十年的软件和机器学习专业知识,他们构建和运营可大规模扩展的系统来应对当今最困难的问题。

New hCaptcha

功能

  • 框架无关的包。
  • 良好支持
  • 易于设置和配置。
  • 良好的文档和IDE友好。
  • 经过充分测试,代码质量高。
  • 支持Laravel 7.x
  • PSR-7支持(ServerRequest验证)。
  • 用❤️和☕制作。

支持

像Spatie一样,我只支持php 7.4以上和Laravel版本7以上的版本。

步骤

  1. 安装和设置

要使用hcaptcha,您需要有一个站点密钥和一个密钥点击这里设置域名并获取密钥。

站点密钥用于小部件,而密钥用于验证我们从hcaptcha收到的响应。

有关更多详细信息,请参阅官方文档

您可以通过运行此命令composer require laravel-hcaptcha/hcaptcha使用Composer安装此包。

注意:如果您使用的是Laravel >= v5.5,则包将自动注册,因此您可以跳过此部分。

安装包后,您可以在config/app.php文件中的providers数组中注册服务提供程序。

'providers' => [
    ...
    LaravelHcaptcha\Hcaptcha\HCaptchaServiceProvider::class,
],
  1. 配置
// Edit your .env file by adding this two lines and fill it with your keys.

HCAPTCHA_SECRET=your-secret-key
HCAPTCHA_SITEKEY=your-site-key

在Laravel中,您可以发布(通常不需要)

运行php artisan vendor:publish --provider="LaravelHCaptcha\Hcaptcha\HcaptchaServiceProvider"以发布配置文件。

编辑config/hcaptcha.php文件中的secretsitekey值:

vanilla php中的示例

<?php

require_once(__DIR__.'/vendor/autoload.php');

use LaravelHcaptcha\HCaptcha\HCaptcha;

$secret  = 'your-secret-key';
$sitekey = 'your-site-key';
$captcha = new HCaptcha($secret, $sitekey);

if ($_POST) {
    // You need to check also if the $_POST['g-recaptcha-response'] is not empty.
    $response = $captcha->verify($_POST['h-recaptcha-response'] ?? null);

    echo $response->isSuccess()
        ? 'Yay ! You are a human.'
        : 'No ! You are a robot.';

    exit();
}

?>

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

<?php
// At the bottom, before the </body> (If you're a good programmer and you listen to your mother)
echo $captcha->script();
?>

Laravel

视图

使用以下示例之一将hcaptcha插入您的表单中

<form ...>
    // Other inputs...
    {!! hcaptcha()->display()->toHtml() !!}
    <input type
</form>

{{ hcaptcha()->script()->toHtml(); }}

后端(控制器或项目中的某个地方 ...)

要验证我们从Google收到的响应,您可以在验证器中使用captcha规则

use LaravelHCaptcha\HCaptcha\CaptchaRule;

$inputs   = request()->all();
$rules    = [
    // Other validation rules...
    'h-recaptcha-response' => ['required', new CaptchaRule],
];
$messages = [
    'h-recaptcha-response.required' => 'Your custom validation message.',
    'h-recaptcha-response.captcha'  => 'Your custom validation message.',
];

$validator = Validator::make($inputs, $rules, $messages);

if ($validator->fails()) {
    $errors = $validator->messages();

    var_dump($errors->first('g-recaptcha-response'));

    // Redirect back or throw an error
}

贡献

欢迎任何想法。请随时提交任何问题或拉取请求,请检查贡献指南

安全

如果您发现任何安全相关的问题,请通过电子邮件shirshak55@gmail.com而不是使用问题跟踪器。

致谢