Langkah Praktis Memasang Captcha di CI
Captcha, menurut Wikipedia, adalah sebuah permintaan jawaban yang digunakan untuk meyakinkan bahwa jawaban tersebut tidak digenerate otomatis oleh mesin. Artinya, jika sebuah form berisi captcha telah berhasil dilewati, maka sudah dapat dipastikan bahwa form tersebut diisi oleh manusia.
Captcha dikenalkan oleh Luis von Ahn, Manuel Blum, Nicholas J. Hopper (Carnegie Mellon University), and John Langford (IBM) pada tahun 2000. Captcha merupakan akronim dari Completely Automated Public Turing test to tell Computers and Humans Apart. Dengan captcha, dimungkinkan untuk meminimalisir spam yang mungkin terjadi pada form-form website.
Pada CI, tidak disediakan library untuk memasang captcha di website kita secara langsung. CI hanya menyedian plugin captcha yang perlu kita olah sedikit agar dapat terpasang pada website kita. Kali ini, saya akan berikan langkah-langkah dalam memanfaatkan plugin captcha yang disediakan CodeIgniter tersebut.
Langkah pertama, buat database untuk menyimpan informasi captcha kita.
CREATE TABLE `captcha` ( `captcha_id` int(10) unsigned NOT NULL auto_increment, `captcha_time` int(10) unsigned NOT NULL, `ip_address` varchar(16) NOT NULL default '0', `word` varchar(20) NOT NULL, PRIMARY KEY (`captcha_id`), KEY `word` (`word`) ) ENGINE=MyISAM AUTO_INCREMENT=926 DEFAULT CHARSET=utf8;
Langkah kedua, buat library untuk mempermudah pemasangan captcha pada form. O ya, jangan lupa untuk membuat folder ‘captcha’ persis di bawah folder root dan set permissionnya jadi 777.
Class Captcha { function Captcha() { $this->SA =& get_instance(); } function setChaptcha() { $captcha_path = "http://namadomain.com/captcha/"; $vals = array( 'img_path' => './captcha/', 'img_url' => $captcha_path, 'expiration' => 3600,// satu jam 'img_width' => '140', 'word' => random_string('numeric', 6), ); $cap = create_captcha($vals); $capdb = array( 'captcha_id' => '', 'captcha_time' => $cap['time'], 'ip_address' => $this->SA->input->ip_address(), 'word' => $cap['word'] ); $query = $this->SA->db->insert_string('captcha', $capdb); $this->SA->db->query($query); $data['cap'] = $cap; return $data; } }
Nah, untuk memasang captcha, sisipkan kode berikut pada controller…
$data['cap']=$this->captcha->setChaptcha(); $this->load->view('namaView',$data);
Oke…pada form, kita tampilkan captcha dengan menyisipkan kode berikut…
Masukkan validasi angka <?=$cap['image']?> <?=form_input('captcha')?>
At last…validasi. Percuma ada captcha kalau tidak divalidasi. Hehehe. Buat fungsi callback seperti kode berikut.
function valid_captcha($str) { $expiration = time()-3600; $this->db->query("DELETE FROM captcha WHERE captcha_time < ".$expiration); $sql = "SELECT COUNT(*) AS count FROM captcha WHERE word = ? AND ip_address = ? AND captcha_time > ?"; $binds = array($str, $this->input->ip_address(), $expiration); $query = $this->db->query($sql, $binds); $row = $query->row(); if ($row->count == 0) { return FALSE; }else{ return TRUE; } }
Nah…manfaatkan validasi ini pada method penerima data form.
$rules['captcha'] = "callback_valid_captcha"; // dst
Ok kita selesai. Silakan dicoba, apabila masih bingung dengan validasinya, silakan buka user guide codeIgniter pada sub form validation. Semoga membantu.
Related posts:
- Membuat Website dengan CodeIgniter #4
- Simple Tutorial CodeIgniter Episode 2
- Membuat Website dengan CodeIgniter #2
- Redirect dengan Delay Time di CodeIgniter
- Membuat Combobox Dinamis dengan CI dan Ajax
16 Comments
Leave a comment
Recent Posts
Recent Comments
- LUKISAN MODERN on Sharing Script CI 1.7.2 untuk Sistem Informasi
- Wawan on Share MyFinance : Aplikasi Keuangan Berbasis PHP MySQL
- chandra on Share MyFinance : Aplikasi Keuangan Berbasis PHP MySQL
- nophil on Sistem Presensi dan Billing Sekolah
- yazid on Membuat Combobox Dinamis dengan CI dan Ajax
- faqih on Sharing Script CI 1.7.2 untuk Sistem Informasi
- rangga on Share MyFinance : Aplikasi Keuangan Berbasis PHP MySQL
- reeyz on Membuat Website dengan CodeIgniter #1
- Rubby on Membuat Website dengan CodeIgniter #4
- Anggie on Membuat Website dengan CodeIgniter #1
- reeyz on Membuat Website dengan CodeIgniter #1
- Fajar on Share MyFinance : Aplikasi Keuangan Berbasis PHP MySQL
- newbie2 on Ajax File Upload (CodeIgniter dan JQuery)
- newbie on Ajax File Upload (CodeIgniter dan JQuery)
- ardy on Share MyFinance : Aplikasi Keuangan Berbasis PHP MySQL
- Tips Trik Blogging on Simple Tutorial CodeIgniter Episode 3
- Anggie on Share MyFinance : Aplikasi Keuangan Berbasis PHP MySQL
- Manz on Share MyFinance : Aplikasi Keuangan Berbasis PHP MySQL
- Manz on Membuat Combobox Dinamis dengan CI dan Ajax
- anggie on Share MyFinance : Aplikasi Keuangan Berbasis PHP MySQL



Mas aku bingung sama artikel ini, dicoba gak bisa..
Kayak nya Tulisannya gak ampe abis ya ???
Buat contoh nya donk mas, yang bisa di download, lengkap dengan validasi captcha nya jg.
Thanksd…
Setahu saya jalan kok. Saya pakai metode ini dalam beberapa project yang saya buat.
waduh jelasin detail donk mas maklum newbie nih di frameworks jadi script diatas tolong dijelasin namanya pa dan lokasi nya taro dimana …….. ???? ok :D
mas CI bisa pake capthcha selain diatas gk.misal pakai script capcay hasil downlot dari google
ooh…tentu bisa mas hendra…
mas,, kq punya saya tombol login
ga bisa ych,,,,
maz…
gmn kalo pgn nampilin captcha yang dari captcha.net…
tolong ya maz!
silakan baca disini mas http://codeigniter.com/wiki/ReCAPTCHA/ …udah komplit itu…
mas anggi … kok saya coba yang muncul Call to undefined function random_string() yah??? … apa string_helper nya harus di load dulu ???
nuhun … :)
@ardi : Pastikan helper string udah di load ya?
Mas2…
Saya Mau Tanya…
function valid_captcha($str) Itu Savenya Dimana Ya???
Apakah Taro Di Controller_Nya Apa DimanaNya???
Mohon Bantuannya…
Sesuai contoh di User Guide, fungsi tsb diletakkan di Controller mas..
Mas mo Tanya Kalo captcha ada refresh nya bagaimana konsepnya mas, kl boleh share codingngya
Pake aja captcha library yang banyak tersebar di internet mas.
mas, dari beberapa aplikasi yang mas anggie buat, semua system dalam 1 folder + application, just suggest… multiple ci lebih efisien dalam ngembangin aplikasi mas.. jadi cukup folder application (nama aplikasi yang dikembangkan) saja…
@desta : yg laen emang ga saya sentuh mas..alasan saya menyertakan folder system disini, adalah supaya pengunjung yg download lgsg bisa jalanin CInya, jd saya ga perlu terangin copy sana sini gitu..