Tạo captcha theo kiểu tính tổng 2 số ngẫu nhiên

  • 05/07/2014
  • 1687
  • 0
Tiếp tục một phương pháp tạo captcha một cách đơn giản mà thiết thực chống lại nạn spam bừa bãi.

Trong bài viết Sử dụng captcha trong Zend Framework chúng tôi đã giới thiệu về cách sử dụng captcha hình ảnh cho những website được thiết kế bằng Zend Framework. Tuy nhiên, đây hoàn toàn không phải là cách duy nhất để sử dụng captcha. Có rất nhiều cách để tạo ra công cụ lọc những truy cập tự động. Hôm nay chúng tôi xin chia sẻ cho các bạn cách tạo một loại captcha cực kì đơn giản mà vẫn giữ được hiệu quả. Đó là việc yêu cầu người truy cập tính tổng của hai số ngẫu nhiên trước khi thực thi một hành động nào đó như đăng kí tài khoản, gửi bài viết, comment...

captcha php

Để làm được việc này thì đầu tiên bạn cần lấy được 2 số ngẫu nhiên đã. Không có số thì lấy gì mà cộng, không ngẫu nhiên thì mất đi tính chất của việc xác minh là người dùng không đoán trước được câu hỏi và câu trả lời. Tất nhiên là để đơn giản thì ta chỉ lấy trong khoảng từ 1-9, tức là số có 1 chữ số. Xác nhận mà yêu cầu người truy cập rút máy tính ra thì cũng hơi quá đáng nhỉ? Ngoài ra thì ta cũng thực hiện việc cộng hai số ngẫu nhiên vừa lấy để có kết quả luôn.

1
2
3
4
5
6
7
8
<?php
$number1 = rand(1,9);
$number2 = rand(1,9);
$sum = $number1 + $number2;
?>
<form>
   ....
</form>

Chúng ta sẽ chèn tổng mà chúng ta vừa tính được vào bên trong một thẻ hidden ở trong form để so sánh với giá trị mà người dùng nhập vào.

1
2
3
4
<form>
   <input type="hidden" name="correctsum" value="<?php echo $sum; ?>"/>
   ...
</form>

Thực hiện việc hiển thị 2 số ra màn hình để người dùng tính toán và nhập kết quả như sau:

1
2
3
4
5
6
<form>
   ...
   <?php echo $number1.' + '.$number2.' = '; ?>
   <input type="text" name="captcha" />
   ...
</form>

Cuối cùng là xử lý hành động “Submit” của người dùng, chúng ta sẽ đem giá trị mà người dùng nhập vào so sánh với giá trị tổng mà chúng ta đã ẩn phía trên.

1
2
3
4
5
6
7
8
9
<?php
$correctsum = $_POST['correctsum'];
$captcha = $_POST['captcha'];
if($correctsum == $captcha){
   // TODO: success
}else{
   // TODO: Captcha Invalid
}
?>

Rồi đó, xong! Khá đơn giản phải không. Nếu có thắc mắc gì thì bạn có thể để lại comment phía dưới mà chúng tôi sẽ trả lời trong thời gian ngắn nhất. 

Không biết liệu bạn có hứng thú với Tiện ích kiểm tra urls rút gọn hay không. Đây là thứ giúp đỡ bạn khá nhiều trong việc duyệt web một cách an toàn trước hiểm họa từ những liên kết rút gọn.

  Ý kiến bạn đọc

Bạn cần trở thành thành viên của nhóm để có thể bình luận bài viết này. Nhấn vào đây để đăng ký làm thành viên nhóm!
Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây