Neredeyim ?

Muğla / Ortaca

Hızlı İletişim

buldurmert@gmail.com

Beni Takip Edebilirsin

Yazılarım

Laravel Google ReCaptcha Eklenmesi ve Kullanımı

Laravel Google ReCaptcha Eklenmesi ve Kullanımı

  • 4 dakika
  • 5 year ago

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.

1Bu 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: