my documentation

beberapa catatan kecil

membuat CAPTCHA dengan Zend Framework Captcha Image

dengan 2 komentar

Untuk mengurangi SPAM pada aplikasi web kita, kita dapat menggunakan fitur CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart). Captcha ini akan melakukan test pengidentifikasian terhadap manusia atau komputer (mesin). tes dilakukan dengan memberikan sebuah tampilan, bisa berupa text-yang tidak biasa atau gambar berupa tulisan yang tidak umum, tetapi masih dapat ditebak manusia.

Zend Framework menyediakan fitur generator captcha test berupa text atau gambar yang dapat digunakan pada website kita. salah satunya dengan menggunakan Zend Capctha Image. penggunaannya cukup mudah, dengan meng-instance kelas Zend_Captcha_Image kita dapat meng-generate image captcha untuk validasi input form pada website kita.

Berikut ini contoh kelas Captcha yang dibuat untuk menghandle captcha.


<?php

class Captcha {
 var $id;
 var $captcha;
 var $imgDir;

 public function Captcha (){

require_once ('Zend/Captcha/Image.php");
 $this->imgDir = '/var/www/html/public/images/captcha/';
 $this->captcha = new Zend_Captcha_Image();
 $this->captcha->setTimeout('300') //set waktu menebak
 ->setWordLen('5') //set jumlah huruf
 ->setHeight('50') //set tinggi bambar
 ->setFont('/var/www/default.ttf') //set font default
 ->setImgDir($this->imgDir) //mengatur direktori untuk menyimpan gambar (harus memiliki permision read-write atau mode 777 pada linux OS)
 ->setDotNoiseLevel('40')  //mengatur tingkat (jumlah) noise titik pada gambar
 ->setLineNoiseLevel('2')  ;  //mengatur tingkat (jumlah) niose garis pada gambar

 $this->captcha->generate();    //command to generate session + create image
 $this->id = $this->captcha->getId();
 }

 public function getId(){
 return $this->id;
 }

 public function getImgDir(){
 return $this->imgDir;
 }

 public function isValid($id, $input){

require_once('Zend/Session/Namespace.php');
$session = new Zend_Session_Namespace('Zend_Form_Captcha_'.$id);
 if ($session->word==$input){
 return true;
 }
 else{
 return false;
 }
 }
}

dengan memanggil fungsi $this->captcha->generate() Zend_Captcha akan menggenerate gambar random pada path imgDir, nama file merupakan ID captcha yang dapat diambil dengan fungsi getId() dan berekstensi default “.png”.

Fungsi ->generate() juga otomatis menyimpan ID captcha dan “word” captcha pada session dengan namespace Zend_Form_Captcha_(no Id Captcha) session ini dapat digunakan untuk melakukan validasi terhadap inputan dari user. pada contoh ini telah dibuat fungsi isValid() dengan input berupa id captcha dan word captcha untuk dicocokkan dengan yang tersmpan dalam session.

dalam script view nya dapat dilihat pada contoh berikut :


<?=$this->form('form1', array('method'=>'POST','action'=>'registrasi/daftar/','onsubmit'=>"return validasi()")) ?>

Isikan data identifikasi anda dibawah ini, dan tekan tombol "KIRIM"
<table>
<tr>
 <td><?= $this->formLabel('idlabel', 'Nomor Identitas') ?></td>
 <td><?= $this->formText('identitas', '',array('id'=>'identitas','maxlength'=>"35")) ?></td>
 <td><small>(Isikan nomor identitas berupa <strong>KTP</strong> atau <strong>SIM</strong>)</small></td>
</tr>

<tr>
 <td><?= $this->formLabel('email', 'Email') ?></td>
 <td><?= $this->formText('email', '',array('id'=>'email')) ?></td>
 <td><small>(Isikan email valid anda)</small></td>
</tr>
<tr>
 <td>&nbsp;</td>
 <td colspan="2"><img src="public/images/captcha/<?= $this->captcha->getId() ?>.png " /></td>
</tr>
<tr></tr>
 <td>&nbsp; </td>
 <td><?= $this->formText('input', '',array('id'=>'captcha')) ?><input name="id" type="hidden" value="<?=$this->captcha->getId() ?>" /></td>
 <td><small>(isikan karakter yang muncul pada gambar diatas)</small></td>
</tr>
<tr>
 <td colspan="2" align="center"><?= $this->formSubmit('submit', 'Kirim', array('id'=>'submit')) ?></td>
</tr>
</table>
</form>

dan hasilnya akan tampil sebagai berikut :

sumber

Ditulis oleh nugrahaputra

Februari 23, 2010 pada 4:12 am

Ditulis dalam Software

Dikaitkatakan dengan

2 Tanggapan

Berlangganan komentar dengan RSS.

  1. nice artcle.

    zend framework captcha

    April 22, 2010 pada 5:17 am

  2. terima kasih atas sharingya

    penjernihair.com

    Mei 29, 2010 pada 6:35 pm


Tinggalkan Balasan

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Ubah )

Twitter picture

You are commenting using your Twitter account. Log Out / Ubah )

Facebook photo

You are commenting using your Facebook account. Log Out / Ubah )

Connecting to %s

Ikuti

Get every new post delivered to your Inbox.