pythontr.com
Captcha kodlarının okunabilirliğini arttırması için yenileme butonu ekleyerek çalıştırılması son kullanıcı için kolaylık sağlayacaktır.
Öncelikle controller sayfamızda düzenlemelerimizi yapalım
# bu fonksiyon sabit olarak kullanacağımız fonksiyondur bunu direkt html olustururken cagiracaz. public function get_captcha() { $this->load->library('form_validation'); $this->load->helper('captcha'); $vals = array( 'img_path' => './captcha/', 'img_url' => base_url().'captcha/', 'font_path' => './sistemk/fonts/texb.ttf', 'img_width' => '150', 'img_height' => 30, 'expiration' => 7200, 'img_name' => 'img_captcha' ); return create_captcha($vals); } # bu fonksiyon ise jquery ile çağıracağımız kısımdır dinamik olarak oluşturacağımız koddur public function get_ajax_captcha() { $this->load->library('form_validation'); $this->load->helper('captcha'); $vals = array( 'img_path' => './captcha/', 'img_url' => base_url().'captcha/', 'font_path' => './sistemk/fonts/texb.ttf', 'img_width' => '150', 'img_height' => 30, 'expiration' => 7200, 'img_name' => 'img_captcha' ); $tmp = create_captcha($vals); # önemli olan nokta daha sonra post işleminde kullanacağımız captcha değerini bir session a atıyoruz. $this->session->set_userdata('captcha_word',$tmp['word']); echo $tmp['image']; } # controller kısmında captchayı kullanacağımız alandaki açıklamaları kısa yapacağım mantığı anlaşılması yeterli olacaktır. public function index() { $this->load->library('form_validation'); $this->data['cap'] = $this->get_captcha(); $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']); $this->load->view('temsilci/login',$this->data); } else ............ } # bu kısım ise captcha dogrulugunu yaptigimiz kisimdir. #------------------------------------------------ # 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; } }
Şimdi view kısmını düzenleyelim çok karışmaması için gerekli kısımların örneklerini yazacağım
<script type="text/javascript" src="js/jquery-1.4.4.min.js"></script> .......... <div style="float:left;width:400px;margin-left:150px;margin-bottom:3px;"> <div id="div_captcha" style="float:left;margin-right:10px;"><?php echo $cap['image'];?></div> <a id="refresh_captcha" style="float:left;cursor: pointer;"> <img name="image" src="/images/reload.png"/> </a> <label for="captcha">Captcha:</label> <input class="txtInput" id="captcha" name="captcha" size="35" value="" type="text"><br> <div style="float:left; width:100%;background-color:#CCCCCC;"> <?php echo form_error('captcha'); ?> </div> .......... <script> $('#refresh_captcha').click(function(){ $.get( "/temsilci/get_ajax_captcha", function( data ) { $( '#div_captcha' ).html( data ); }); }); </script>
Yorumlar