Tạo Captcha trong CodeIgniter 3x

Hướng dẫn tạo captcha và kiểm tra người dụng nhập chính xác captcha trong CodeIgniter 3x
  • 10:13 17/10/2016
  • Kỳ Nhân
  • 0 Bình luận
  • 878

Để tạo Captcha trong CodeIgniter 3x ta chỉ cần load helper captcha được xây dựng sẵn trong Framework CodeIgniter là được

$this->load->helper('captcha');

Việc kế tiếp là cấu hình để hiển thị file captcha theo ý muốn, trong phần controllers các bạn viết hàm tạo captcha

$vals = array(
    'img_path' => "duong_dan_chua_hinh_khi_captcha_duoc_tao",
    'img_url' => 'duong_dan_hien_thi_hinh_captcha_sau_khi_tao',
    'font_path' => 'duong_dan_chua_font_ttf_de_tao_captcha',
    'img_width' => '120',
    'img_height' => 34,
    'expiration' => 0,
    'word_length' => 8,
    'font_size' => 25,
    'img_id' => 'Imageid',
    'pool' => '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
    'colors' => array(
        'background' => array(235, 235, 235),
        'border' => array(51, 51, 51),
        'text' => array(255, 0, 0),
        'grid' => array(255, 255, 255)
    )
);    
$this->data['captcha'] = create_captcha($vals);

Trong đó có một số mình đã ghi sẵn trong hàm, còn 1 số thuộc tính nhu img_width,font_size... các bạn có thể chỉnh sửa theo ý muốn. Hàm $this->data['captcha'] = create_captcha($vals); để mình đẩy biến qua view nếu các bạn tạo cấu trúc CodeIgniter giống mình hướng dẫn ở bài 5. Còn không các bạn có thể đẩy biến bằng hàm load ví dụ $this->load->view('xem_captcha',array('caprcha'=>create_captcha($vals)));

Bên view các bạn chỉ cần gọi captcha ra là được

<?=$captcha['image'];?>
<input type="text" class="form-control" name="captcha" id="captcha" autocomplete="off">
<input type="hidden" name="re_captcha" id="re_captcha" class="show-re-captcha" value="<?=$captcha['word'];?>">

Như hàm trên mình làm 2 input 1 cái à hidden chứa value captcha word, 1 thì không hidden để người dùng nhập mã captcha theo hình ảnh bên trên. Khi POST dữ liệu đi, các bạn chỉ cần check giá trị input name captcha==re_captcha là người dùng nhập đúng.

Các bạn có thể print_r($captcha) các trường của biến $captcha để xem các mảng chứa bên trong và tùy biến xử lý.