husonet | Tarih: 16.12.2014
Codeigniter Captcha Ekleme
Codeigniter Captcha Veri Girişlerinde Güvenlik Kontrolü
Captcha Nedir? Web üzerinden otomatik yapılan isteklere karşı alınan bir önlem yöntemidir. Bu yöntemi genellikle internet botlarına karşına alınır. Kullanım amacı aslında sayfa üzerinde işlem yapan kimsenin insan mı? yoksa robot mu olduğunu sistem tarafından tespit edilmesinde kullanılan basit bir yöntem diyerek özetleyebiliriz.
Yapacağımız örneğimizde PHP Codeigniter Frameworku için Captcha eklemesi yapmak. Zaten codeigniter üzerinde başlangıç seviyesini geçtiğinizi düşünerek kodları yazacam.
Controller üzerinde çalışalım
public function index()
{
$this->load->helper('captcha'); # kütüphanemezi load ediyoruz.
$vals = array(
'img_path' => './captcha/', # bu klasörümüzü codeigniter frameworkumuzun içinde açıyoruz 666 yada 777 olarak izinlerini ayarlıyoruz.
'img_url' => base_url().'captcha/',
'font_path' => './system/fonts/texb.ttf', # uygulama için font belirliyoruz.
'img_width' => '150', # ölçülerini ayarlıyoruz.
'img_height' => 30,
'expiration' => 7200
);
$this->data['cap'] = create_captcha($vals);
$this->form_validation->set_rules('captcha', 'CAPTCHA', 'trim|required|xss_clean|callback_GuvenlikKontrolu');
if ($this->form_validation->run() == FALSE)
{
$this->session->set_userdata('captcha_word',$this->data['cap']['word']); # bu kısım devamlı session değişmemsi için burada atama işlemini gerçekleştriyoruz.
$this->load->view('temsilci/login',$this->data);
}
}
#------------------------------------------------
# guvenlik kodu kontrolu
function GuvenlikKontrolu($sValue)
{
if($sValue != $this->session->userdata('captcha_word'))
{
$this->form_validation->set_message('GuvenlikKontrolu', 'Girdiğiniz Güvenlik Kodu yanlıştır. Lütfen tekrar deneyiniz.');
return FALSE;
}
}
view kısmını düzeltelim.
<form>
<label for="captcha">Captcha:</label>
<input class="txtInput" id="captcha" name="captcha" size="35" value="" type="text"><br>
<?php echo form_error('captcha'); ?>
<input type="submit" name="btnLogin" id="btnLogin" value="Sorgula" style="width:100px;float:right;" />
</form>
İlgili konular: Codeginiter Captcha Yenileme 'Refresh'