Captcha merupakan hal wajib jika anda ingin membuat form pendaftaran dan semacamnya.
Hal ini dikarenakan dengan adanya Captcha maka anda akan terhindar dari :
1. SPAM
2. Mencegah Serangan Brute Force
Berikut merupakan cara membuat captcha yang sangat simpel dengan menggunakan code igniter
1. File Controller
Pertama pada file Controller, kita generate random string menggunakan fungsi random_string yang dimiliki oleh code igniter, jangan lupa untuk meload helper string ( $this->load->helper('string'); )
Simpan hasil dari random string kedalam parameter yang akan kita lempar ke view, disini saya menggunakan parameter $data['randomkey']
------
class Tutorial extends CI_Controller{
public function __construct()
{
parent::__construct();
$this->load->helper('string');
}
function captcha(){
$data['randomkey'] = random_string('alnum', 8);
$data['form_action'] = base_url('tutorial/captcha_proses') ;
$this->load->view('tutorial/captcha',$data);
}
function captcha_proses(){
$hdnkey = $this->input->post('hdnkey', true);
$key = $this->input->post('key', true);
if($key !== $hdnkey){
$this->session->set_flashdata('failed', 'Captcha yang anda masukan salah !');
redirect('tutorial/captcha');
}else{
$this->session->set_flashdata('message', 'Hore anda benar');
redirect('tutorial/captcha');
}
}
}
------
2. File View
Lalu pada tampilan view buat sebuah input dengan tipe hidden untuk menyimpan parameter randomkey yang dilempar dari Controller.
--------
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <html> <head></head> <body> <!-- notifikasi --> <?php if($this->session->flashdata('message')){?> <p style="color:white;background-color:Green;"> <strong><?php echo $this->session->flashdata('message');?></strong> </p> <?php unset($_SESSION['message']); } else if($this->session->flashdata('failed')){ ?> <p style="color:white;background-color:red;"> <strong><?php echo $this->session->flashdata('failed');?></strong> </p> <?php unset($_SESSION['failed']); } ?> <h1>Simple Captcha CODE IGNITER</h1> <form action="<?php echo $form_action;?>" method="post"> <p> Captcha KEY : <strong style="color:red;font-size:30px;"><?php echo $randomkey; ?></strong></br> Input Captcha : <input type="hidden" name="hdnkey" id="hdnkey" value="<?php echo $randomkey; ?>"> <input type="text" name="key" id="key" required> <button type="submit" >Submit</button> </form> </body> </htmL> |
-------
Jangan lupa untuk menampilkan nilai dari parameter Random key tersebut agar bisa dilihat user.
Selanjutnya saat proses submit form hidden field dicek valuenya sama tidak dengan input field if($key !== $hdnkey)
Voila sangat mudah bukan membuat Captcha dengan CodeIgniter