Laravel 4 の場合は v1 ブランチを使用します。
composer require anhskohbo/no-captcha
注意:このパッケージは、Laravel 5.5 以降の自動検出機能をサポートしています。そのため、Laravel 5.5 以降を使用している場合は、これらのSetup手順をスキップしてください。
app/config/app.phpに以下を追加します。
1- ServiceProvider からプロバイダー配列へ:
AnhskohboNoCaptchaNoCaptchaServiceProvider::class、
2- エイリアス配列へのクラスのエイリアス:
'NoCaptcha' => AnhskohboNoCaptchaFacadesNoCaptcha::class、
3- 設定ファイルを公開する
php artisan vendor:publish --provider="AnhskohboNoCaptchaNoCaptchaServiceProvider"NOCAPTCHA_SECRETとNOCAPTCHA_SITEKEYを.envファイルに追加します。
NOCAPTCHA_SECRET=secret-key NOCAPTCHA_SITEKEY=site-key
(ここから入手できます)
デフォルトのオプションの場合:
{!! NoCaptcha::renderJs() !!}言語サポートまたは onloadCallback オプションを使用する場合:
{!! NoCaptcha::renderJs('fr', true, 'recaptchaCallback') !!}デフォルトのウィジェット:
{!! NoCaptcha::display() !!}カスタム属性 (テーマ、サイズ、コールバック ...) を使用する場合:
{!! NoCaptcha::display(['データテーマ' => 'ダーク']) !!}送信ボタンを使用した非表示の reCAPTCHA:
{!! NoCaptcha::displaySubmit('my-form-id', 'submit now!', ['data-theme' => 'dark']) !!}キャプチャ検証が成功したときに自動生成されたコールバックがフォームを送信できるようにするには、このメソッドでフォームの ID が必要であることに注意してください。
'g-recaptcha-response' => 'required|captcha'ルール配列に追加します。
$validate = Validator::make(Input::all(), [ 'g-recaptcha-response' => 'required|captcha']);
次の値をvalidation言語ファイルのcustom配列に追加します。
'custom' => ['g-recaptcha-response' => ['required' => 'ロボットではないことを確認してください。','captcha' => 'キャプチャ エラー!後でもう一度試すか、サイト管理者に連絡してください。',
]、
]、次に、 Form内のキャプチャ エラーを確認します。
@if ($errors->has('g-recaptcha-response'))
<span class="ヘルプブロック">
<strong>{{ $errors->first('g-recaptcha-response') }}</strong>
</スパン>
@endifLaravel テスト機能を使用する場合、キャプチャ フォーム要素の応答をモックアウトする必要があります。
したがって、キャプチャを含むフォーム テストでは、ファサードの動作をモックすることでこれを行うことができます。
// captchaNoCaptcha::ShouldReceive('verifyResponse') での検証エラーを防止します
->1回()
->andReturn(true);// '必須' validationNoCaptcha::ShouldReceive('display') に非表示の入力を提供します
->zeroOrMoreTimes()
->andReturn('<input type="hidden" name="g-recaptcha-response" value="1" />');その後、フォームの残りの部分を通常どおりテストできます。
HTTP テストを使用する場合、「必須」検証のためにリクエスト本文にg-recaptcha-response追加できます。
// captchaNoCaptcha::ShouldReceive('verifyResponse') での検証エラーを防止します
->1回()
->andReturn(true);// g-recaptcha-response$response を含むリクエスト本文を持つ POST リクエスト = $this->json('POST', '/register', ['g-recaptcha-response' => ' 1','名前' => 'ジョン','メールアドレス' => '[email protected]','パスワード' => '123456','パスワード確認' => '123456',
]);以下のチェックアウト例:
<?phprequire_once "vendor/autoload.php";$secret = 'CAPTCHA-SECRET';$sitekey = 'CAPTCHA-SITEKEY';$captcha = new AnhskohboNoCaptchaNoCaptcha($secret, $sitekey);if (! empty($_POST) ) {var_dump($captcha->verifyResponse($_POST['g-recaptcha-response']));exit();
}?><フォームアクション="?" Method="POST"><?php echo $captcha->display(); ?><button type="submit">送信</button>
</form><?php echo $captcha->renderJs(); ?>https://github.com/anhskohbo/no-captcha/pulls