Menangkal Spam Komentar dengan RECAPTCHA pada Lokomedia

Recaptcha adalah salah satu captcha security code yang sering digunakan banyak website untuk menghindari bot spam pada berbagai form. Seperti captcha pada umumnya, recaptcha dapat membedakan apakah pengguna adalah komputer atau manusia dengan memberikan gambar berupa tulisan terdistorsi untuk dijawab oleh pengguna. Uniknya captcha ini adalah sebuah program yang digunakan untuk mendigitalkan buku-buku yang dimiliki oleh google. Jadi gambar yang dikirim merupakan pindaian buku-buku yang tidak dapat terbaca oleh OCR sehingga dengan menggunakan recaptcha kita telah berpartisipasi untuk mendigitalkan buku.

Kalau tentang keamanan, kita sadar setiap sistem pasti ada kelemahannya. Namun recaptcha terbilang sangat handal danterbukti dengan digunakan oleh banyak orang untuk melindungi websitenya dari para spammer. So, bukan pilihan yang salah jika kita memilih recaptcha ini. Selain merupakan produk keluaran perusahaan raksa google, recaptcha merupakan program yang dishare secara gratis kepada semua pengguna. Sekarang bagaimana cara menerapkan recaptcha tersebut pada lokomedia? Caranya cukup gampang. Terlebih dahulu kita harus mendaftarkan website kita menggunakan akun google yang kita miliki di http://www.google.com/recaptcha.

recaptcha-home

Klik tombol USE reCAPTCHA ON YOUR SITE. Kemudian akan diarahkan ke halaman SIGN UP menggunakan akun google.

reCHAPTCHA-SIGN-UP

Setelah berhasil Login, kita diminta untuk memasukkan alamat website yang akan dipasangi reCAPTCHA.

recapcha-web

Jika sudah selesai klik tombol Create Key untuk mendapatkan nomor unik penunjang script reCHAPTCHA kita.

recapcha-key

Setelah mendapatkan private dan public key, baru kita bisa pasang recaptcha pada website kita. Sebagai contoh kita akan gunakan pada template sandbox lokomedia. Pertama kita unduh dahulu file recaptcha php library disini. Ekstrak dan letakkan file recaptcha librari pada folder config dan panggil melalui file media php dengan menambahkan kode berikut :

include "config/recaptchalib.php";

Kemudian kita bisa menggunakan public key recaptcha yang sudah kita dapatkan pada form komentar. Caranya buka file comments.php yang ada pada folder sandbox. Edit input captcha default dengan kode berikut.

<?php
	$publickey = "isi dengan publickey yang kita dapat";
        $capca= recaptcha_get_html($publickey);
	echo"$capca";
?>

Sedangkan private key bisa kita gunakan pada file simpankomentar.php dengan logika seperti ini.

$privatekey = "isi dengan private key yang kita dapatkan";
$resp = recaptcha_check_answer ($privatekey,
                $_SERVER["REMOTE_ADDR"],
                $_POST["recaptcha_challenge_field"],
                $_POST["recaptcha_response_field"]);
if (!$resp->is_valid)
  {
       echo "Peringatan salah kode";
  }
  else
  {
       kode eksekusi
  }

Untuk lokomedia kita bisa memodifikasinya dengan mereplace kode dari baris 33 hingga akhir dengan kode berikut.

$privatekey = "isi dengan private key yang didapatkan";
$resp = recaptcha_check_answer ($privatekey,
                $_SERVER["REMOTE_ADDR"],
                $_POST["recaptcha_challenge_field"],
                $_POST["recaptcha_response_field"]);
if (!$resp->is_valid)
  {
       echo "<script>window.alert('Kode Captcha yang Anda isikan tidak cocok atau Anda belum mengisikan kode Captcha');window.location=('berita-$_POST[id]-$d[judul_seo].html')</script>";
  }
  else
  {
     // Mengatasi input komentar tanpa spasi
$split_text = explode(" ",$isi_komentar);
$split_count = count($split_text);
$max = 57;

for($i = 0; $i <= $split_count; $i++){
if(strlen($split_text[$i]) >= $max){
for($j = 0; $j <= strlen($split_text[$i]); $j++){
$char[$j] = substr($split_text[$i],$j,1);
if(($j % $max == 0) && ($j != 0)){
  $v_text .= $char[$j] . ' ';
}else{
  $v_text .= $char[$j];
}
}
}else{
  $v_text .= " " . $split_text[$i] . " ";
}
}

    $sql = mysql_query("INSERT INTO komentar(nama_komentar,url,isi_komentar,id_berita,tgl,jam_komentar) 
                        VALUES('$nama_komentar','$url','$v_text','$_POST[id]','$tgl_sekarang','$jam_sekarang')");
    echo "<meta http-equiv='refresh' content='0; url=berita-$_POST[id]-$d[judul_seo].html'>";
  }
	
}

Namun jangan lupa untuk kembali memanggil recaptcha librari seperti pada file media.php diatas.