membuat CAPTCHA dengan Zend Framework Captcha Image
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> </td>
<td colspan="2"><img src="public/images/captcha/<?= $this->captcha->getId() ?>.png " /></td>
</tr>
<tr></tr>
<td> </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 :


nice artcle.
zend framework captcha
April 22, 2010 pada 5:17 am
terima kasih atas sharingya
penjernihair.com
Mei 29, 2010 pada 6:35 pm