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$_COOKIEnế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