Hướng dẫn sử dụng chức năng nhập mã captcha

Chủ nhật - 10/05/2015 11:59
Captcha là một loại kiểm thử giúp máy tính phân biệt giữa hành động của con người và các hành động "tự động" không phải do con người thao tác.
Nói đơn giản, captcha là một bức tường để ngăn chặn những gì không phải do con người trực tiếp thao tác trên hệ thống. NukeViet cũng sử dụng Captcha để giải quyết vấn đề đó.

Captcha là gì, captcha làm được gì?

Mình không nhắc lại trong bài viết này, vì nó đã có rất nhiều bài viết giới thiệu về loại này, có thể tìm kiếm trên internet để biết thêm thông tin.

Captcha trong NukeViet được dùng ở đâu?

- Cấu hình NukeViet có một phần riêng về captcha, bạn có thể  cấu hình captcha cho hệ thống tại ACP/Cấu hình/Thiết lập an ninh/Cấu hình hiển thi captcha.
Trong NukeViet, captcha được dùng nhiều ở khu vực đăng nhập (đăng nhập thành viên, đăng nhập quản trị, biểu mẫu liên hệ,.....)

Cơ chế tạo mã captcha trong NukeViet?

NukeViet có 2 các tạo mã, có thể tùy chọn sử dụng hai loại này ở khu vực Thiết lập an ninh
- Tạo mã sử dụng thư viện SimpleCaptcha: Xem thêm tại http://code.google.com/p/cool-php-captcha/
- (Mặc định) Tạo mã sử dụng thư viện GD (PHP) và các hàm xử lý hình ảnh: Tạo một chuỗi ngẫu nhiên, ghi chuỗi này vào SESSION (để kiểm tra về sau), dùng các font ngẫu nhiên (Chúng ta thấy một lần reload là font chữ thay đổi, loằng ngoằng khác nhau), tạo 1 bức ảnh chứa chuỗi này để hiển thị lên màn hình.

Sử dụng mã captcha trong form NukeViet?

Xin lấy module contact làm ví dụ, từ đó ban có thể tham khảo code để chèn captcha vào dự án của mình.
Các file liên quan:
Mở themes/default/modules/contact/form.tpl (Hiển thị mã)
<img height="22" src="/index.php?scaptcha=captcha&t={NV_CURRENTTIME}" alt="{LANG.captcha}" class="captchaImg" />
/index.php?scaptcha=captcha&t={NV_CURRENTTIME} đường dẫn này trả về một cái ảnh (là hình ảnh hiển thị mã captcha), NV_CURRENTTIME là thời gian hiện tại. Tên class captchaImg được quy định trong hàm change_captcha (Xem bên dưới).
<em class="fa fa-pointer fa-refresh fa-lg" onclick="change_captcha('#fcode_iavim');">&nbsp;</em>
change_captcha là hàm javascript, để đổi ảnh captcha (Ảnh nào khó quá nhìn không rõ thì đổi ảnh khác). Hàm này được load cùng giao diện, kiểm tra giao diện của bạn, nếu vẫn chưa có hàm này, cần thêm vào, tham khảo nội dung hàm ở /themes/default/js/main.js
Cú phápchange_captcha( id_input_nhập_captcha )
Cơ chế tạo lại mã của hàm này cũng như cơ chế tạo mã bên trên.

Bạn cần có một input text để nhập mã nhìn thấy vào:
<input type="text" maxlength="6" value="" id="fcode_iavim" name="fcode" class="form-control" />
Mở modules/contact/theme.php (Xử lý giao diện)
Bên dưới dòng code khởi tạo giao diện
$xtpl = new XTemplate( 'form.tpl', NV_ROOTDIR . '/themes/' . $module_info['template'] . '/modules/' . $module_file );
Chỉ cần assign thêm thời gian hiện tại và đường dẫn thư mục là đủ: 
$xtpl->assign( 'NV_CURRENTTIME', NV_CURRENTTIME );$xtpl->assign( 'NV_BASE_SITEURL', NV_BASE_SITEURL );
Các hằng liên quan có thể dùng: NV_GFX_WIDTH (Độ rộng hình), NV_GFX_HEIGHT (Chiều cao hình), ......

Mở modules/contact/funcs/main.php (Xử lý dữ liệu)
Tìm đoạn code
elseif( ! nv_capcha_txt( $fcode ) ){	$error = $lang_module['error_captcha'];}
Hàm nv_capcha_txt để kiểm tra xem giá trị nhập vào input có đúng với hình ảnh đang hiển thị hay không. True = đúng và False = Sai. Sau đó đưa ra câu thông báo hợp lý.

Xem thêm: Cấu hình hiển thị captcha

Chú ý: Việc đăng lại bài viết này trên ở website hoặc các phương tiện truyền thông khác mà không ghi rõ nguồn http://mynukeviet.net - Trung tâm ứng dụng NukeViet là vi phạm bản quyền.

Tổng số điểm của bài viết là: 9 trong 2 đánh giá

Xếp hạng: 4.5 - 2 phiếu bầu
Click để đánh giá bài viết

  Ý kiến bạn đọc

Trung tâm ứng dụng NukeViet
Ghi rõ nguồn khi sao chép thông tin từ website này.

Powered by NukeViet - a product of VINADES.,JSC