July 17, 2016

Membuat reCaptcha Google untuk validasi sebuah Form di PHP

Assalamualaikum wr wb, masih dalam nuansa bulan syawal 1437 H, maka saya ucapkan mohon maaf lahir batin dan pada kali ini saya akan sharing tutorial bagaimana cara membuat reCaptcha Google untuk validasi sebuah Form di PHP. Captcha merupakan sebuah metode pengujian yang digunakan untuk membedakan antara manusia dan komputer. Kenapa CAPTCHA penting dalam sebuah bagian dari sekuritas, karena captcha dapat mencegah ancaman sebuah bot yang melakukan penetrasi pada sebuah sistem komputer.

Ada berbagai cara untuk membuat sebuah captcha, tetapi kali ini saya membuat captcha menggunakan reCaptcha dari google. Anda bisa kunjung langsung link berikut untuk informasi lebih lanjut mengenai reCaptcha Google.

Tough on bots
Easy on humans

Protect your website from spam and abuse while letting real people pass through with ease

Membuat reCaptcha Google untuk validasi sebuah Form di PHP

Kali ini saya akan buat reCaptcha untuk memvalidasi user yang akan login pada sebuah aplikasi php, saya disini menggunakan Yii Framework v2. Pertama kita harus mendapatkan api key terlebih dahulu dari reChapta google.

Membuat reCaptcha Google untuk validasi sebuah Form di PHP

Membuat reCaptcha Google untuk validasi sebuah Form di PHP

Pilih get reCaptcha dan anda kemudian akan di alihkan ke halaman untuk manage api key, anda akan diminta untuk memasukkan nama label dan domain dari web anda.

Membuat reCaptcha Google untuk validasi sebuah Form di PHP

Membuat reCaptcha Google untuk validasi sebuah Form di PHP

Setelah berhasil menginput anda akan diberikan penjelasan step by step bagimana cara memasang reCaptcha pada website anda.

Membuat reCaptcha Google untuk validasi sebuah Form di PHP

Membuat reCaptcha Google untuk validasi sebuah Form di PHP

Ngoding Time

Saya kebetulan menggunakan template advance dari Yii2 Framework, saya akan memvalidasi login pada frontend. Untuk dapat menggunakan validasi dari reCaptcha, anda bisa baca dokumentasinya disini, reCaptcha menggunakan method post dengan beberapa parameter yang akan dikirimkan ke server, server akan mengirimkan respone ke website kita dengan nilai TRUE(1) jika verifikasi benar/ sesuai. Anda bisa lihat di bawah ini request dan response Api nya.

Membuat reCaptcha Google untuk validasi sebuah Form di PHP

Membuat reCaptcha Google untuk validasi sebuah Form di PHP

Terlebih dulu kita buat sebuah method yang digunakan melakukan request post ke google. Saya menggunakan Curl dan untuk parameternya anda bisa lihat pada manajemen reCaptcha yang anda telah buat. Bagi yang belum mengerti tentang curl, anda bisa lihat pada postingan saya sebelumnya disini.

public function verifiyChap($rechap){
       $ch = curl_init();
       curl_setopt($ch, CURLOPT_URL, 'https://www.google.com/recaptcha/api/siteverify');
       curl_setopt($ch, CURLOPT_POST,1);
       curl_setopt($ch, CURLOPT_POSTFIELDS,
           "secret=6LcYQCETAAAAABdrfEOmu_sbc0IRFRefrj8xsVPN&response=".$rechap);
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

       $server_output = curl_exec ($ch);
       $cekServer  = json_decode($server_output);
       curl_close ($ch);
       if(!empty($cekServer)){
           if ($cekServer->success == 1){ 
               return TRUE;
           }else{ 
               return FALSE;
           }
       }else{
           return FALSE;
       }
   }

Kemudian sesuaikan form login yang akan digunakan.

<?php

/* @var $this yii\web\View */
/* @var $form yii\bootstrap\ActiveForm */
/* @var $model \common\models\LoginForm */

use yii\helpers\Html;
use yii\bootstrap\ActiveForm;

$this->title = 'Login';
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="site-login">
    <h1><?= Html::encode($this->title) ?></h1>

    <p>Please fill out the following fields to login:</p>

    <div class="row">
        <div class="col-lg-5">
            <?php $form = ActiveForm::begin(['id' => 'login-form']); ?>

                <?= $form->field($model, 'username') ?>

                <?= $form->field($model, 'password')->passwordInput() ?>

                <?= $form->field($model, 'rememberMe')->checkbox() ?>

                <div style="color:#999;margin:1em 0">
                    If you forgot your password you can <?= Html::a('reset it', ['site/request-password-reset']) ?>.
                </div>

                <div class="form-group">
                    <?= Html::submitButton('Login', ['class' => 'btn btn-primary', 'name' => 'login-button']) ?>
                </div>

                <div class="g-recaptcha" data-sitekey="6LcYQCETAAAAAJ4AvC9BH6b5lBU0BMMhpd38qI3s"></div>

            <?php ActiveForm::end(); ?>
        </div>
    </div>
</div>

Sesuaikan method loginnya *saya membuat method login pada satu class yang sama dengan method verifiyChap.

public function actionLogin()
   {
       if (!\Yii::$app->user->isGuest) {
           return $this->goHome();
       }

       $model = new LoginForm();
       if ($model->load(Yii::$app->request->post())) {
           if(SELF::verifiyChap($_POST['g-recaptcha-response'])){
               $model->login();
           }else{
               echo "chapta belum di verifikasi broo";
               die();
           }
           return $this->goBack();
       } else {
           return $this->render('login', [
               'model' => $model,
           ]);
       }
   }

Pengujian

Berikut adalah penampakan dari form loginnya yang sudah terpasang reCaptcha Google.

Membuat reCaptcha Google untuk validasi sebuah Form di PHP

Membuat reCaptcha Google untuk validasi sebuah Form di PHP

Kita tes melakukan login tanpa mencentang reCaptcha.

Membuat reCaptcha Google untuk validasi sebuah Form di PHP

Membuat reCaptcha Google untuk validasi sebuah Form di PHP

Centang reCaptcha, masukkan username dan password yang benar, hasilnya sebagai berikut.

Membuat reCaptcha Google untuk validasi sebuah Form di PHP

Membuat reCaptcha Google untuk validasi sebuah Form di PHP

Membuat reCaptcha Google untuk validasi sebuah Form di PHP

Membuat reCaptcha Google untuk validasi sebuah Form di PHP

Tadaa, reCaptcha berjalan dengan baik. Sekian tulisan dari saya mengenai pembuatan validasi form menggunakan reCaptcha dari Google, semoga dapat bermanfaat.

Terimakasih.

Agus Wiji Suhariono

Memulai menulis Blog pada bulan November dari Tahun 2015. Penulis merupakan alumni dari Politeknik Negeri Malang angkatan 2011 Program Studi Manajemen Informatika, Jurusan Elektro. Penulis memulai menekuni dunia programming mulai tahun 2014 dan sekarang bekerja di Pemerintahan sebagai IT Staff.

You may also like...

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

Powered By
100% Free SEO Tools - Tool Kits PRO