Tutorial CodeIgniter : Memasang Helper Captcha Pada Web Berbasis CodeIgniter

Captcha yang mempunyai kepanjangan Completely Automated Public Turing test to tell Computers and Humans Apart adalah suatu metode pertahanan dari serangan spam yang kian merajalela saat ini. Captcha berisi kombinasi angka dan huruf yang umumnya sangat mudah dibaca oleh manusia, namun sangat sulit dibaca oleh mesin/komputer. Banyak di internet yang menyediakan plug-in captcha secara cuma-cuma, contohnya yang banyak dipakai ialah reCaptcha. Menurut pengalaman pribadi saya, reCaptcha sudah sangat aman untuk menghalau spam-spam yang dilancarkan para spammer. Namun kelemahannya, ialah saking amannya terkadang user sontoloyo seperti saya ini sangat sulit untuk membaca kombinasi angka dan huruf yang terdapat di dalamnya. Kasian user-nya kalau harus ‘dipermainkan’ oleh captcha :(. Maka dari itu, alangkah baiknya kalau kita membuat captcha sendiri. “Tapi males ach, ada cara yang setengah instan gak selain pakai reCaptcha dan tanpa harus membuat sendiri???”. Di dalam framework CodeIgniter sudah disediakan plug-in captcha yang cara pemakaiannya sangat mudah, anak SMP aja bisa lho. plug-in captcha ini berbentuk file helper jika menggunakan CodeIgniter 2.00 ke atas. Dan berbentuk file plugin jika menggunakan CodeIgniter 1.7.2 ke bawah. Nah, pada postingan kali ini saya akan menjelaskan sedikit tentang “Bagaimana sih caranya Memasang Plug-In Captcha Pada Web Berbasis CodeIgniter“.

1. Pada studi kasus kali ini, saya menggunakan CodeIgniter 2.0.0 dimana plug-in captcha-nya berbentuk file helper. Siapkan dulu file-file framework CodeIgniter di direktori htdocs.

2. Untuk menghemat waktu dan proses pengerjaan :D, disini saya hanya menggunakan file Controller saja, tanpa View dan Model. Karena helper captcha ini membutuhkan database (bukan session) untuk menyimpan kombinasi angka dan huruf-nya, maka kita buat dulu struktur table-nya seperti di bawah ini :

Silahkan cek file database di file yang bisa di-download pada akhir postingan ini.

3. Dalam konfigurasi captcha ini, dibutuhkan 2 buah function. Function yang pertama berfungsi untuk menghasilkan gambar captcha dan function yang satunya lagi berfungsi untuk melakukan validasi atas kode captcha yang diinputkan oleh user.

Function untuk menghasilkan gambar captcha

	function gbr()
	{
		$vals = array(
		'img_path' => './captcha/',
		'img_url' => base_url().'captcha/',
		'font_path' => './system/fonts/impact.ttf',
		'img_width' => '200',
		'img_height' => 60,
		'expiration' => 90
		);

		$cap = create_captcha($vals);

		$data = array(
			'captcha_time' => $cap['time'],
			'ip_address' => $this->input->ip_address(),
			'word' => $cap['word']
			);
		$expiration = time()-90;
		$this->db->query("DELETE FROM captcha WHERE captcha_time < ".$expiration);
		$query = $this->db->insert_string('captcha', $data);
		$this->db->query($query);
		echo $cap['image'];
	}

Function untuk melakukan validasi

	function validasi()
	{
		$expiration = time()-90;
		$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($_POST['captcha'], $this->input->ip_address(), $expiration);
		$query = $this->db->query($sql, $binds);
		$row = $query->row();

		if ($row->count == 0)
		{
			echo "Kode Captcha yang anda masukkan tidak Valid...!!!";
		}
		else
		{
			echo "Selamat, Kode Captcha Benar...!!!";
		}
	}

4. Pada file index, kita tampilkan gambar captcha tersebut. Dan kita sisipkan sebuah form untuk mengirimkan kode captcha yang akan di validasi oleh mesin.

	function index()
	{
		echo $this->gbr().'
		<form method="post" action="'.base_url().'index.php/demo_captcha/validasi">
		<input type="text" name="captcha" value="" /><input type="submit" value="Cek Captcha">
		</form>';
	}

Gampang kan konfigurasinya??? Captcha helper yang disediakan oleh CodeIgniter ini sudah lumayan ampuh untuk sekedar menghalau para spammer. Mungkin kekurangannya ialah, file gambarnya disimpan di dalam direktori hosting. Secara logika, ini akan memberatkan kinerja server. Namun, kita bisa mengatur batas expired dari gambar-gambar tersebut. OK deh, semoga tutorial ini bisa bermanfaat untuk rekan-rekan yang mungkin dibingungkan dengan pembuatan captcha.

Happy Blogging and Keep Coding

Cheerrrsss….!!!!

[to_like]Download Aplikasi[/to_like]

6 comments

  1. mita Reply

    makasih ya infonya..
    ijin donlot ya 🙂
    klo ada bantuan boleh minta bantuannya gak?
    hehehehe
    maklum nubi ci ^^v

  2. hendra Reply

    mas ketika di windows jalan captcha nya tpi knpa ketika saya coba di linux lansung jadi tanda tanya yang panjang ex : ????????????????????????????????????????????????????????????????????????????????

  3. reed Reply

    oya bli… pada menu buku tamu, kode captchanya tidak muncul sehingga tdk busa komen, itu pengaturannya dimana yah? atau jika bisa visitor komen tanpa kode captcha, kira2 bgmn caranya? mohon pencerahannya bli.