In this post, I will show how to use Google ReCaptcha with laravel 5.6. First of all, you need to get Site Key
and Secret Key
.
Step 1: Register your site
For this, click on this link to register your site. Enter your label and site address as shown in the screenshot below:
After you submit register button, you will get your site key
and secret key
Step 2: Setup Key in your configuration file
After you get your keys, open up your .env
file and add key details as like below:
NOCAPTCHA_SECRET=your-secret-key NOCAPTCHA_SITEKEY=your-site-key
Step 3: Install Captcha Package
We will use https://github.com/anhskohbo/no-captcha this package to use Google captcha. Install this package using composer. Run the command to install the package
composer require anhskohbo/no-captcha
Now, open your app/config/app.php
and add the following.
The ServiceProvider to the providers array :
'providers' => [ ..... Anhskohbo\NoCaptcha\NoCaptchaServiceProvider::class, ], 'aliases' => [ ...... 'NoCaptcha' => Anhskohbo\NoCaptcha\Facades\NoCaptcha::class,
And lastly, publish configration file using command.
php artisan vendor:publish --provider="Anhskohbo\NoCaptcha\NoCaptchaServiceProvider"
Step 4: Create Routes for view
Let’s create two routes for getting view file and another for posting data. I have named it as “contact”.
Route::get('contact','ContactController@getContact'); Route::post('contact','ContactController@postContact');
Step 5: Create controller
To process our application logic, we need to create a controller named ContactController
. Simply run the following command to create a controller.
php artisan make:controller ContactController
Lets modify our controller to to get view and process posted data from view. Final controller looks like below:
validate($request, [ 'email' => 'required|email', 'password' => 'required|min:4', 'g-recaptcha-response' => 'required|captcha', ]); dd('validation passed'); } }
Create View
Finally, create view to display register page and captcha. I have created a default blade as a master template. default.blade.php
looks like below:
@yield('main')
So, this master template is extended by our custom contact us page. Adding form to contact template, our final contace-us.blade.php
file looks like below:
@extends('default') @section('main')@endsection@if (count($errors) > 0)@endif@foreach ($errors->all() as $error)
- {{ $error }}
@endforeachGoogle ReCaptcha
That’s it. You are good to go with your captcha validation. Enjoy!