alexeevdv/yii2-recaptcha-widget

Google reCAPTCHA 小部件用于 Yii2

安装次数: 45,308

依赖项: 0

建议者: 0

安全性: 0

星标: 4

关注者: 2

分支: 5

开放问题: 2

类型:yii2-extension

1.2.1 2019-11-24 18:26 UTC

This package is auto-updated.

Last update: 2024-09-25 04:45:29 UTC


README

Build Status codecov PHP 5.6 PHP 7.0 PHP 7.1 PHP 7.2 PHP 7.3

Yii2 的 Google reCAPTCHA 包装器。

安装

安装此扩展的首选方法是使用 composer

运行以下命令之一:

$ php composer.phar require alexeevdv/yii2-recaptcha-widget "^1.0"

或者在您的 composer.json 文件的 require 部分添加以下内容:

"alexeevdv/yii2-recaptcha-widget": "^1.0"

require 部分

配置

通过应用程序组件

'components' => [
    //...
    'recaptcha' => [
        'class' => \alexeevdv\recaptcha\Recaptcha::class,
        'siteKey' => 'YOUR_SITE_KEY',
        'secret' => 'YOUR_SECRET',
    ],
    //...
],

通过小部件和验证器参数

use alexeevdv\recaptcha\RecaptchaValidator;
use alexeevdv\recaptcha\RecaptchaWidget;

// Model validation rules
public function rules()
{
    return [
        //...
        [
            ['recaptcha'], 
            RecaptchaValidator::class, 
            'secret' => 'YOUR_SECRET', 
            'minimalScore' => 0.6, 
            'onScoreReceived' => function ($score) {
                // Do smth on actual user score. F.e. log it somewhere
            },
        ],
        //...
    ];
}

// Widget params
echo RecaptchaWidget::widget([
    'siteKey' => 'YOUR_SITE_KEY',
]);

使用方法

use alexeevdv\recaptcha\RecaptchaValidator;
use alexeevdv\recaptcha\RecaptchaWidget;

// Using ActiveForm
// In this case model validation rules will be applied
// You'll need to specify RecaptchaValidator for attribute
echo $form->field($model, 'recaptcha')->widget(RecaptchaWidget::class);

// As standalone field
echo RecaptchaWidget::widget(['name' => 'recaptcha']);
// In this case you need to check value manually
$validator = new RecaptchaValidator();
$isValid = $validator->validateValue(Yii::$app->request->get('recaptcha'));

测试中的使用

要关闭 recaptcha 检查,您需要在测试配置中添加以下内容

'container' => [
    'definitions' => [
        \alexeevdv\recaptcha\RecaptchaValidator::class => ['skipOnEmpty' => true],
    ],
],

额外的组件和小部件参数

/**
 * Optional. Color theme of the widget. "dark" or "light"
 * @var string
 */
public $theme;

/**       
 * Optional. The type of CAPTCHA to serve. "image" or "audio"
 * @var string
 */
public $type;

/**
 * Optional. The size of the widget. "compact" or "normal"
 * @var string
 */
public $size;

/**
 * Optional. The tabindex of the widget and challenge.
 * If other elements in your page use tabindex, it should be set to make user navigation easier.
 * @var integer
 */
public $tabindex;

/**
 * Optional. The name of your callback function, executed when the user submits a successful response.
 * The g-recaptcha-response token is passed to your callback.
 * @var string|JsExpression
 */
public $callback;

/**
 * Optional. The name of your callback function, executed when the reCAPTCHA response expires
 * and the user needs to re-verify.
 * @var string|JsExpression
 */
public $expiredCallback;

/**
 * Optional. The name of your callback function, executed when reCAPTCHA encounters an error 
 * (usually network connectivity) and cannot continue until connectivity is restored. If you specify 
 * a function here, you are responsible for informing the user that they should retry.
 * @var string|JsExpression
 */
public $errorCallback;

/**
 * Optional. Forces the widget to render in a specific language
 * If not set then language is auto detected from application language
 * If set to false then language is autodetected on client side
 */
public $language;