CodeIgniter CAPTCHA validation CodeIgniter CAPTCHA validation codeigniter codeigniter

CodeIgniter CAPTCHA validation


 * Example of captcha validation without database useage * Instead of it used session to store captcha value * The images will be deleted after the use

public function index(){       $this->load->helper(array('form', 'url','captcha'));    $this->load->library('form_validation');       $this->form_validation->set_error_delimiters('<div class="error">', '</div>');       $this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean');       $this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_check_database');       $this->form_validation->set_rules('captcha', 'Captcha', 'callback_validate_captcha');    if($this->form_validation->run() == FALSE)       {        $original_string = array_merge(range(0,9), range('a','z'), range('A', 'Z'));        $original_string = implode("", $original_string);        $captcha = substr(str_shuffle($original_string), 0, 6);         //Field validation failed.  User redirected to login page        $vals = array(                'word' => $captcha,                'img_path' => './captcha/',                'img_url' => 'http://mycodeignitor.org/captcha/',                'font_path' => BASEPATH.'fonts/texb.ttf',                'img_width' => 150,                'img_height' => 50,                'expiration' => 7200        );        $cap = create_captcha($vals);        $data['image'] = $cap['image'];        if(file_exists(BASEPATH."../captcha/".$this->session->userdata['image']))            unlink(BASEPATH."../captcha/".$this->session->userdata['image']);        $this->session->set_userdata(array('captcha'=>$captcha, 'image' => $cap['time'].'.jpg'));        $this->load->view('index_index',$data);       }       else       {            if(file_exists(BASEPATH."../captcha/".$this->session->userdata['image']))                unlink(BASEPATH."../captcha/".$this->session->userdata['image']);            $this->session->unset_userdata('captcha');            $this->session->unset_userdata('image');            redirect('home', 'refresh');       }}public function validate_captcha(){    if($this->input->post('captcha') != $this->session->userdata['captcha'])    {        $this->form_validation->set_message('validate_captcha', 'Wrong captcha code, hmm are you the Terminator?');        return false;    }else{        return true;    }}


I suggest you to use recaptcha which is easy to implement in codeigniter: http://codeigniter.com/wiki/ReCAPTCHA