noylecorp/laravel-recaptcha

Google ReCAPTCHA服务的Laravel包

v0.4.1 2016-06-15 14:44 UTC

This package is not auto-updated.

Last update: 2024-09-28 17:43:54 UTC


README

Build Status

Laravel Recaptcha

Laravel 5.1的Google reCAPTCHA包,提供创建reCAPTCHA字段和验证响应的服务。

注意: 此包使用reCAPTCHA API版本2.0

安装

使用composer安装Laravel Recaptcha

composer require noylecorp/laravel-recaptcha

接下来,将服务提供者添加到您的config/app.php

'providers' => [
    // ...
    Noylecorp\Recaptcha\RecaptchaServiceProvider::class,
]

接下来,将包配置文件发布到您的应用程序

php artisan vendor:publish --provider="Noylecorp\Recaptcha\RecaptchaServiceProvider"

文件recaptcha.php被复制到您的配置目录。最终的安装步骤是将您的reCAPTCHA站点和密钥添加到您的.env文件中

RECAPTCHA_SITE_KEY=your-site-key
RECAPTCHA_SECRET_KEY=your-secret-key

如果您没有reCAPTCHA密钥,可以在此注册一对。

使用方法

创建reCAPTCHA小部件

使用recaptcha()辅助函数轻松创建reCAPTCHA小部件

{!! recaptcha() !!}

// outputs...

<script src="https://www.google.com/recaptcha/api.js"></script>
<div class="g-recaptcha" data-sitekey="my-site-key"></div>

您也可以传递HTML属性...

{!! recaptcha(['id' => 'myrecaptcha']) !!}

...或reCAPTCHA的任何可用选项

{!! recaptcha(['theme' => 'dark']) !!}

{!! recaptcha(['data-theme' => 'dark']) !!} // same thing

如果您需要分别渲染reCAPTCHA小部件的<script><div>标签,可以使用recaptch_script()recaptcha_widget()函数

{!! recaptcha_script() !!}

// ...

{!! recaptcha_widget() !!}

需要支持无JavaScript的用户?您还可以插入一个<noscript>回退

{!! recaptcha() !!}
{!! recaptcha_noscript() !!}

或者,如果您不想使用任何辅助函数,可以使用recaptcha_site_key()获取您自定义标记的站点密钥

<div class="g-recaptcha" data-sitekey="{{ recaptcha_site_key() }}"></div>

最后,如果您已安装LaravelCollective Html,所有辅助函数也可以通过Form外观访问

{!! Form::recaptcha() !!}

验证reCAPTCHA响应

验证reCAPTCHA字段的最简单方法是使用添加的recaptcha验证规则

// in a controller...
$this->validate($request, [
    'g-recaptcha-response' => 'required|recaptcha'
]);

// in a form request...
public function rules()
{
    return [
        'g-recaptcha-response' => 'required|recaptcha'
    ];
}

或者,您可以直接访问服务进行手动验证

if (app('recaptcha')->verify($request->input('g-recaptcha-response'))) {
    // user passed reCAPTCHA
}
else {
    // user failed reCAPTCHA
}