laravel

laravel google recaptcha

laravel google recaptcha kullanımı

Laravel Google ReCaptcha Eklenmesi ve Kullanımı

  • 4 dakika
  • 1 ay önce

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.

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 :)

Mert Buldur

Yaklaşık 12 senedir internet ortamında aktif olarak faaliyet göstermekteyim. 2014 yılında açmış olduğum Youtube kanalımdan , kişisel websitem üzerinden ve Udemy Üzerinden 2k+ ziyaretçime eğitimler sağlıyorum. Şu anda Freelance Yazılım geliştiricisi olarak hayatıma devam etmekteyim. Birçok firma ve müşterilerime Yazılım desteği sağlamaktayım.

Yorum Yaz