Beni Takip Edebilirsin
Laravel Google ReCaptcha Eklenmesi ve Kullanımı
Merhabalar , internette düzgün kullanıcılar olduğu gibi spam kullanıcılarda çok fazla bulunmaktadır.Bu spam arkadaşlar için bizler Google ReCaptcha kullanıyoruz.Tabiki tek önlem bu değil ama çoğu yerde karşılaştığınız "ben robot değilim" kısmı budur :)
Laravel projemize Google ReCaptcha nasıl entegre edebiliriz adım adım inceleyeceğiz.
1. Bu Adresten kayıt oluyoruz ve yeni domain eklememiz yapıyoruz.( key ve secret keyleri bir yere kaydediyoruz)
2. Proje dizinimizdeki .env dosyasına 2 adet key value ekliyoruz.
GOOGLE_RECAPTCHA_KEY=XXXX ( key )
GOOGLE_RECAPTCHA_SECRET=XXXX (secret key)
3.Proje dizinimizden app/Validators/ReCaptcha.php dosyasını oluşturuyoruz eğerki projenizde app klasörü altında Validators yok ise manuel oluşturabilirsiniz.
<?php
namespace App\Validators;
use GuzzleHttp\Client;
class ReCaptcha
{
public function validate($attribute, $value, $parameters, $validator)
{
$client = new Client;
$response = $client->post('https://www.google.com/recaptcha/api/siteverify',
[
'form_params' =>
[
'secret' => env('GOOGLE_RECAPTCHA_SECRET'),
'response' => $value
]
]
);
$body = json_decode((string)$response->getBody());
return $body->success;
}
}
4. AppServiceProvider.php dosyasının içerisindeki Boot methoduna aşağıdaki kodu ekliyoruz. ( NOT: en üse use Illuminate\Support\Facades\Validator; dahil etmeyi unutmuyoruz )
Validator::extend(
'recaptcha',
'App\\Validators\\ReCaptcha@validate'
);
5.Hata mesajını gösterebilmek için resources/lang/(dil)/validation.php içerisine 'recaptcha'=>'Robot olmadığını kanıtla' ekliyoruz.
6.Recaptchayı kullanacağımız yerde aşağıdaki html kodlarını eklemeyi unutmuyoruz.
@if(env('GOOGLE_RECAPTCHA_KEY'))
<div class="g-recaptcha"
data-sitekey="{{env('GOOGLE_RECAPTCHA_KEY')}}">
</div>
@endif
<script src='https://www.google.com/recaptcha/api.js'></script>
7. Evet Hazırız ! Sadece son olarak formumuzun post edildiği yerde validation kontrolünde "'g-recaptcha-response' => 'required|recaptcha'" ekliyoruz ve artık spamları engellemiş oluyoruz :)
Yorumlar: