Tạo mã Captcha cho form liên hệ trong WordPress
Hướng dẫn chi tiết cách thêm mã Captcha vào form liên hệ trong WordPress để bảo vệ trang web khỏi spam và bot tự động.
Bài viết này sẽ hướng dẫn bạn cách tích hợp mã Captcha vào form liên hệ trong WordPress sử dụng plugin reCAPTCHA của Google. Chúng ta sẽ thực hiện các bước cài đặt và cấu hình mã Captcha để đảm bảo an toàn cho trang web.
Mã PHP:
Để thêm mã Captcha vào form liên hệ, bạn có thể sử dụng đoạn mã sau đây trong file functions.php
của theme hoặc một plugin tùy chỉnh:
// Thêm reCAPTCHA vào form liên hệ
function my_contact_form_captcha() {
?>
<div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY"></div>
<?php
}
add_action('wp_footer', 'my_contact_form_captcha');
// Xử lý xác thực Captcha
function verify_captcha($fields, $form) {
if (isset($_POST['g-recaptcha-response'])) {
$response = $_POST['g-recaptcha-response'];
$remoteip = $_SERVER['REMOTE_ADDR'];
$secret = 'YOUR_SECRET_KEY';
$url = 'https://www.google.com/recaptcha/api/siteverify';
$data = [
'secret' => $secret,
'response' => $response,
'remoteip' => $remoteip
];
$options = [
'http' => [
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data),
],
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
$resultJson = json_decode($result);
if (!$resultJson->success) {
// Xử lý khi Captcha không hợp lệ
return new WP_Error('captcha_error', 'Vui lòng xác thực Captcha.');
}
} else {
return new WP_Error('captcha_error', 'Vui lòng xác thực Captcha.');
}
}
add_action('contact_form_before_send', 'verify_captcha', 10, 2);
Giải thích chi tiết từng dòng code:
-
my_contact_form_captcha()
: Hàm này sẽ thêm widget reCAPTCHA vào footer của trang, yêu cầu bạn thay thếYOUR_SITE_KEY
bằng khóa site của bạn. -
verify_captcha()
: Hàm này xử lý xác thực Captcha sau khi người dùng gửi form. Nó sẽ gửi yêu cầu đến Google để xác minh mã Captcha và xử lý phản hồi. -
add_action('wp_footer', 'my_contact_form_captcha')
: Thêm reCAPTCHA vào phần footer của WordPress. -
add_action('contact_form_before_send', 'verify_captcha', 10, 2)
: Gọi hàm xác thực Captcha trước khi gửi form liên hệ.
Yêu cầu hệ thống:
- WordPress 4.0 trở lên
- Trình duyệt hỗ trợ JavaScript
Cách cài đặt các thư viện để chạy được đoạn mã PHP trên:
- Đăng ký tài khoản tại Google reCAPTCHA.
- Tạo một khóa site và khóa bí mật (secret key) cho miền của bạn.
- Thay thế
YOUR_SITE_KEY
vàYOUR_SECRET_KEY
trong mã PHP trên.
Lời khuyên:
- Nên sử dụng reCAPTCHA v2 hoặc v3 để bảo mật tốt hơn.
- Kiểm tra lại các cài đặt DNS nếu bạn gặp sự cố với việc xác thực Captcha.