LoginSignup
4
11

More than 5 years have passed since last update.

Laravel 5.4 でreCAPTCHAを実装する

Last updated at Posted at 2017-05-05

前提

  1. Laravel 5.4の利用方法が一通り分かっていること
  2. Laravel Collective を使ってFORMを実装済み
  3. 実装済みのFORMにreCAPTCHAを追加する

reCAPTCHAの準備

$ composer require anhskohbo/no-captcha
$ vi config/app.php
config/app.php
前略
    'providers' => [
        /*
         * Laravel Framework Service Providers...
         */
        Illuminate\Auth\AuthServiceProvider::class,
        Illuminate\Broadcasting\BroadcastServiceProvider::class,
中略
        /*
         * Forms & HTML
         */
        Collective\Html\HtmlServiceProvider::class,

        /*
         * reCAPTCHA <= ここを追加
         */
        Anhskohbo\NoCaptcha\NoCaptchaServiceProvider::class,
    ],
後略

reCAPTCHAのSECRETとSITE KEYの発行

以下のサイトにアクセスし、ドメインなどを登録。
https://www.google.com/recaptcha/admin#list

.envの修正

.env
NOCAPTCHA_SECRET={発行されたSECRET}
NOCAPTCHA_SITEKEY={発行されたSITE KEY}

viewの修正

適した場所に以下を挿入。自動的にreCAPTCHAのコードが展開されます。

foobar.blade.php
    {!! app('captcha')->display()!!}

コントローラ(バリデーション)の修正

バリデーションルールとメッセージを追加します。

FoobarController.php
// ルール
$rules = [
    'email'                => 'required|email|max:255',
    'g-recaptcha-response' => 'required|captcha',
];

// メッセージ
$messages = [
    'email.required'                => 'Eメールは必須です。',
    'email.email'                   => 'Eメールの形式が正しくありません。',
    'email.max'                     => 'Eメールは255文字以内で入力してください。',
    'g-recaptcha-response.required' => '「私はロボットではありません」の左にチェックを入れてください。',
    'g-recaptcha-response.captcha'  => '「私はロボットではありません」のチェック結果が確認できませんでした。',
];

動作確認

  1. 画面表示して「私はロボットではありません」の文言が表示されていることを確認
  2. reCAPTCHAのチェックボックスをチェックせずに送信ボタンを押下しエラー表示を確認
  3. reCAPTCHAでわざと間違い送信に進めない事を確認
  4. reCAPTCHAを成功し送信、正しく登録できる事を確認
4
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
11