Tạo CAPTCHA đơn giản chống spam comment bằng PHP

Nếu bạn không muốn dùng các dịch vụ CAPTCHA bên ngoài như Google reCAPTCHA (vì chậm, nặng, hoặc yêu cầu cookie), thì có thể tự tạo một CAPTCHA đơn giản bằng PHP để ngăn bot spam comment hiệu quả. Bài viết này sẽ hướng dẫn bạn cách tạo và tích hợp vào form bình luận WordPress hoặc form bất kỳ.

Tạo CAPTCHA đơn giản chống spam comment bằng PHP

CAPTCHA đơn giản là gì?

Thay vì ảnh CAPTCHA hoặc checkbox, ta có thể dùng một câu hỏi ngẫu nhiên đơn giản (ví dụ: “2 + 3 bằng bao nhiêu?”) – con người dễ dàng trả lời, nhưng bot thì không. Phương pháp này cực kỳ nhẹ, không ảnh hưởng tốc độ tải trang.

“Một câu hỏi đơn giản có thể ngăn hàng trăm request spam từ bot tự động.”

Cách tạo CAPTCHA đơn giản bằng PHP

Bước 1: Thêm trường CAPTCHA vào form

Ví dụ: chèn vào form bình luận WordPress trong file comments.php:

<?php
// Tạo câu hỏi CAPTCHA
$captcha_num1 = rand(1, 5);
$captcha_num2 = rand(1, 5);
$captcha_answer = $captcha_num1 + $captcha_num2;
$_SESSION['captcha_result'] = $captcha_answer;
?>

<p>
  <label for="captcha">CAPTCHA: <?php echo "$captcha_num1 + $captcha_num2 = ?"; ?></label><br>
  <input type="text" name="captcha" required>
</p>

Lưu ý: Bạn cần gọi session_start(); ở đầu file hoặc hook init nếu dùng WordPress.

Bước 2: Kiểm tra CAPTCHA khi xử lý comment

Hook vào pre_comment_on_post để kiểm tra trước khi lưu comment:

add_action('pre_comment_on_post', function() {
    session_start();
    if (!isset($_POST['captcha']) || $_POST['captcha'] != $_SESSION['captcha_result']) {
        wp_die('Sai CAPTCHA. Vui lòng quay lại và thử lại.');
    }
});

Ưu điểm của CAPTCHA tự tạo

  • Không dùng JavaScript bên ngoài: không phụ thuộc Google, không bị chặn bởi trình chặn script.
  • Rất nhẹ: không ảnh hưởng tốc độ tải trang.
  • Dễ tùy biến: có thể dùng phép toán, câu hỏi logic, hoặc thậm chí câu hỏi “ngữ nghĩa”.

Lưu ý khi triển khai

  • Đảm bảo dùng session_start() đúng cách (hoặc lưu giá trị trong $_COOKIE nếu cần)
  • Không đặt câu hỏi CAPTCHA cố định – nên thay đổi mỗi lần load trang
  • Không hiển thị kết quả trực tiếp trong HTML

Khi nào nên dùng CAPTCHA đơn giản?

Nên dùng khi:

  • Trang bạn bị bot spam comment hoặc form gửi email
  • Không muốn dùng dịch vụ CAPTCHA bên ngoài
  • Ưu tiên hiệu năng, bảo mật vừa đủ

Kết luận

Giải pháp CAPTCHA đơn giản bằng PHP có thể không hoàn hảo tuyệt đối, nhưng lại cực kỳ phù hợp với các website nhỏ đến trung bình, muốn bảo vệ form khỏi spam mà vẫn nhẹ và thân thiện người dùng. Nếu bạn đang cần một giải pháp nhanh, gọn và dễ bảo trì – đây là lựa chọn đáng cân nhắc.

Bình luận


  • Không có bình luận.

Init Toolbox

Nhấn Ctrl + \ trên máy tính, hoặc vuốt sang trái ở bất kỳ đâu trên mobile.

Đăng nhập





Đang tải...