Image Anti Spam (CAPTCHA) di CakePHP

logocake
Pendahuluan

Suatu ketika mungkin kita pernah merasa kesal saat ingin melakukan posting ke sebuah buku tamu dan dipersilahkan menuliskan kode-kode tanpa arti yang tertera di sebuah gambar persegi panjang. Apa artinya ? Itulah yang disebut dengan sistem CAPTCHA atau Completely Automatic Turing Test To Tell Computer and Human Apart, dalam bahasa ‘ndeso’-nya adalah uji otomatis untuk membedakan antara komputer dan manusia. Algoritma CAPTCHA ini digunakan untuk melawan spambot, yakni sebuah script yang menjelajahi beberapa aplikasi forum diskusi, shoutbox, atau guestbook dan melakukan spamming di sana (pernah melihat iklan-iklan yang berbau pornografi yang menyuguhkan banyak link website di sana ? Atau iklan obat kuat pria ? Itulah salah satu model spam).

CAPTCHA menggunakan prinsip kecerdasan buatan atau Artificial Intelligent (AI). Manusia memiliki kemampuan untuk mengenali sebuah tulisan random (acak, tidak terpola) meskipun tulisan tersebut terdistorsi cukup berat dan kemampuan inilah yang tidak dimiliki oleh komputer, sampai dengan saat ini. Hal inilah yang dimanfaatkan sebagai salah satu uji CAPTCHA yang paling populer. Dengan uji ini, spambot dihadang karena tidak mampu menebak kata dalam gambar tulisan yang terdistorsi.

CakePHP dan KCAPTCHA

CakePHP merupakan sebuah framework multifungsi yang, tentu saja, mendukung penggunaan uji CAPTCHA. Ada sebuah aplikasi opensource untuk menampilkan image CAPTCHA yang dikenal dengan KCAPTCHA. Untuk mendapatkannya, silahkan Anda terlebih dahulu mendownloadnya di sini .

Sudah ? Oke, kita akan memulai proyek penghadangan spambot ini.

PERTAMA :
Ekstrak aplikasi KCAPTCHA Anda dan letakkan di folder vendors dengan path “instalasiCake/vendors/kcaptcha”. Buka file kcaptcha_config.php yang ada di dalam folder kcaptcha tersebut. Di sana ada beberapa konfigurasi yang bisa Anda kustomasi, semisal menghilangkan tampilan “credits” dengan mengeset line :

$show_credits = true ;

menjadi

$show_credits = false;

tentu jika Anda ingin menghargai pencipta aplikasi ini, silahkan tetap menampilkannya. Anda bisa membaca keterangan yang ada dalam file tersebut sebelum melakukan pengaturan.

KEDUA :
Buat sebuah file komponen dengan nama captcha.php dengan script sebagai berikut :

<?php
class CaptchaComponent extends Object
{
function startup(&$controller)
{
$this->controller = $controller;
}
function render()
{
vendor(‘kcaptcha/kcaptcha’);
$kcaptcha = new KCAPTCHA();
$this->controller->Session->write(‘captcha’, $kaptcha->getKeyString());
}
}
?>

Simpan file tersebut pada path “instalasiCake/app/controllers/components/captcha.php”

KETIGA :
Saatnya membuat script validasi pada Controller Anda. Anggap Controller Login adalah Controller yang akan menghandle halaman login Anda.

<?php
class UsersController extends AppController
{

/*tambahkan pendeklarasian komponen Captcha*/
var $components = array(‘Captcha’);

/* menambahkan script validasi */
if(isset($_SESSION[‘captcha’]) && $_SESSION[‘captcha’] == $_POST[‘keystring’]) {

//masukkan script Anda yang lainnya di sini

}
else {
//tampilkan pesan kesalahan
}

/*fungsi captcha untuk rendering image
function captcha()
{
$this->Captcha->render();
}

}
?>

Jangan lupa untuk menyimpan Controller Login yang telah Anda modifikasi sedemikian rupa seperti di atas.

KEEMPAT :

Kini kita akan membuat tampilan image CAPTCHA. Pada bagian View dari aplikasi CakePHP Anda, tambahkan script di bawah ini untuk menampilkan image CAPTCHA :

<img src=”<?php echo $html->url(‘/logins/captcha’); ?>” />

Untuk memasukkan input teks dari image CAPTCHA yang terbaca oleh pengunjung situs Anda, tambahkan script :

<input type=”text” name=”keystring”>

KELIMA :

Cek ! Pastikan aplikasi Anda berjalan dengan baik. Apabila aplikasi Anda tidak menampilkan image, pastikan PHP Anda mendukung dan terinstall GDLibrary. Silahkan cek dengan membuat file info.php yang berisi script :

<?
phpinfo();
?>

Selamat berjuang melawan spam-spam nakal.
Ganbatte !

Be Sociable, Share!
Categories: CakePHP

4 Comments

Leave a Reply