Sering mendapatkan SPAM di guestbook Anda? Jangan heran, karena SPAMMER memang sangat merajalela, terutama dengan bantuan bot yang bisa bekerja secara otomatis tanpa campur tangan manusia. Salah satu cara untuk mengatasi SPAM pada guestbook adalah dengan menggunakan CAPTCHA (Completely Automated Public Turing Test to Tell Computers and Humans Apart), sebuah tes yang diharapkan mampu membedakan antara manusia dan robot. Bentuk implementasinya bisa bermacam-macam, akan tetapi yang paling banyak digunakan adalah dengan menggunakan gambar.
Berikut ini kode yang perlu Anda tambahkan pada bagian awal dari halaman guesbook Anda:
include "fungsi.php";
session_start();
$_SESSION['random-words'] = generate_word();
Baris pertama digunakan untuk menyertakan file captcha.php yang akan berisi fungsi untuk menghasilkan gambar yang kita perlukan. Baris kedua digunakan untuk menjalankan session. Baris ketiga untuk mengacak kata (kita menggunakan fungsi generate_word) yang hendak dibuat dalam bentuk gambar. Kata ini kita simpan pada session yang nanti akan kita gunakan untuk verifikasi.
Berikutnya pada bagian form untuk guestbook, tambahkan kode dibawah ini
Code :
Code
Isi dari file fungsi.php:
function generate_word()
{
$input = array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
$rand_keys = array_rand($input, count($input));
$hash=$input[$rand_keys[0]] . $input[$rand_keys[1]] . $input[$rand_keys[2]] . $input[$rand_keys[3]] . $input[$rand_keys[4]] . $input[$rand_keys[5]] . $input[$rand_keys[6]] . $input[$rand_keys[7]];
return $hash;
}
Inti dari fungsi ini hanyalah mengambil 8 karakter alphanumerik yang kita simpan sebagai array secara acak dan menggabungkannya sebagai sebuah string. Pada contoh ini dibatasi hanya 8 karakter, akan tetapi bisa disesuaikan dengan kebutuhan. Mudah bukan?
Sekarang pada bagian verifikasinya. Karena kata awal tadi sudah tersimpan pada session, maka yang perlu kita bandingkan hanyalah input yang dikirimkan user dengan nilai dari session yang tadi sudah kita buat di awal
if ($code != $_SESSION['random-words'])
{
echo "Kode Tidak Cocok!";
}
else
{
echo "Kode Cocok!";
}
Lalu bagaimana dengan pembuatan gambarnya sendiri? Cukup mudah!! Buat file bernama captcha.php yang berisi
session_start();
header("Content-type: image/png");
$image = imagecreate(80, 15);
$bg_color = imagecolorallocate($image, 255, 255, 255);
$text_color = imagecolorallocate($image, 0, 0, 0);
imagestring($image, 20, 0, 0, $_SESSION['random-words'], $text_color);
imagepng($image);
imagedestroy($image);
Baris 1 digunakan untuk menjalankan session. Perintah ini diperlukan, karena kita perlu mengakses nilai yang tersimpan pada session (informasi kata yang hendak dikonversi kedalam bentuk gambar).
Baris 2 digunakan untuk menentukan tipe data yang akan dihasilkan oleh halaman ini. Pada contoh ini tipe data yang dipakai adalah citra dengan format PNG (Anda bisa mengganti dengan JPEG atau format gambar yang lain).
Baris 3 digunakan untuk membuat sebuah palet gambar dengan ukuran yang telah ditentukan.
Baris 4 digunakan untuk mengalokasikan warna background untuk gambar (disini kita memilih warna putih)
Baris 5 digunakan untuk mengalokasikan warna untuk teks (warna hitam)
Baris 6 digunakan untuk membuat sebuah teks dengan warna dan ukuran font yang telah ditentukan (dipakai 20)
Baris 7 digunakan untuk membuat gambar yang dimaksud
Baris 8 digunakan untuk mengapus resource yang telah dibuat
Hasilnya bisa dilihat dibawah:

Contoh diatas merupakan versi paling sederhana. Jika Anda berminat, Anda bisa menambahkan berbagai efek yang mampu mempersulit pembacaan, seperti dengan menambahkan berbagai efek-efek lain yang biasa Anda temui pada implementasi CAPTCHA pada berbagai situs besar.
Selamat berkreasi dengan CAPTCHA….
Mei 27, 2008 pukul 3:42 pm
@Willy: pake ReCaptcha.net aja :D
Mei 28, 2008 pukul 10:28 am
PHP modulenya harus support GD library juga khan yah maz…??
Tapi untuk PHP yang skrg sudah support semua koq…
heheh
Mei 28, 2008 pukul 11:05 am
Ya, PHPnya harus diinstall dengan dukungan GD
Mei 29, 2008 pukul 1:00 am
Ditambah anjing n kucing juga wil kaya di rapidshare huehehehe
Mei 29, 2008 pukul 2:51 pm
waduh masi ada anjing dan kucingnya yaaa?? tempatku dah ga ada :D
Mei 29, 2008 pukul 2:52 pm
emang rapidshare ada anjing dan kucing ya?
kayaknya langsung wuz wuz wuz….. :D
Juni 13, 2008 pukul 5:16 am
anjing dan kucing rapidshare itu yang gmn sih?
koq tempatku begitu buka di browser alamat donlot rapid, langsung di-take over sama IDM trus bikin 16 koneksi di IDM nya ya?
ada yang salah tak?
Juni 13, 2008 pukul 6:20 am
wah gaya ik ce2p, mbo minta acountnya juga dunk hehehe
Agustus 28, 2008 pukul 8:54 am
Saya udah coba,
kok gak support ya…
saya pake phpmyadmin2
Agustus 29, 2008 pukul 4:51 am
Gak support apa ya?
kalo saya tebak mungkin GDnya yang belum diinstall aja
phpmyadmin tidak ada hubungannya dengan ini
September 17, 2008 pukul 4:38 pm
Eh pake ming library jg bisa lo..
http://einchi.com/2008/07/18/captcha-part-2/
haha malah numpang iklan..
ko masalah rapid share linknya di sulap aja^^
generatornya sudah banyak di google..
tinggal di search.. langsung dapet linknya yang premium XD
Desember 11, 2008 pukul 3:11 am
Bagaimana captcha diatas dijalankan pda hp ato browser yg tdk support cookies ato cookies na dmatikan,? Apa kode mash bs terkoreksi.? Solusinya? Thx
Desember 22, 2008 pukul 1:56 pm
contoh diatas pake session kan pak? klo session kan data disimpan di server jadi ga masalah, klo pake object cookie baru masalah ketika user mendisable browser karena data emang ditampung di browser pak
April 15, 2009 pukul 12:42 am
coba dulu ah…
April 22, 2009 pukul 3:45 am
kok…kelewat satu langkah mlulu sih… aduh pusing
November 15, 2009 pukul 2:38 pm
[...] Captcha Captcha Captcha Captcha Captcha Captcha Captcha [...]