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> </スパン> @endif
Laravel テスト機能を使用する場合、キャプチャ フォーム要素の応答をモックアウトする必要があります。
したがって、キャプチャを含むフォーム テストでは、ファサードの動作をモックすることでこれを行うことができます。
// 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