• Đăng ký
  • Đăng nhập

Thêm Google Captcha vào form bình luận của WordPress

📅 — 👀 1534 — 👦

Trang này có hữu ích không?

👍 Có (12)        👎 Không (14)


Nhiều khi website của chúng ta bị spam bình luận nhiều do bot của những người không mong muốn. Để hạn chế vấn đề này, chúng ta thêm 01 re-captcha của Google vào form bình luận để ngăn chặn những con bot này.

Kiến thức cần biết:

  1. Captcha : là 01 đoạn code hay 01 dịch vụ online dùng để xác định đó là do người dùng hay do bot.
  2. Bot : là 01 đoạn code hoặc 01 tool dùng để tiến hành 01 tiến trình được thiết lập sẵn.

Trong bài viết là lấy ví dụ bot tiến hành tiến trình tự đăng nhận xét trên website của chúng ta, bài viết dùng dịch vụ re-captcha của Google để ngăn chặn hành động tự đăng nhận xét (hay ta thường gọi là spam).

Sau đây là cách chúng ta thiết lập:

Bước 01 : Đăng nhập và đăng ký sử dụng dịch vụ re-Captcha của Google tại https://www.google.com/recaptcha/admin#list, chọn thiết lập như hình vẽ (nhớ là chọn reCaptcha v2).

Thêm Google Captcha vào form bình luận của WordPress - Hình 1

 

Thêm Google Captcha vào form bình luận của WordPress - Hình 2

 

Bước 02 : Sau đăng ký sử dụng dịch vụ thành công thì ta chèn đoạn code sau vào fie function.php là xong (thay đổi site key & secret key của bạn nhé)

/**
 * Google recaptcha add before the submit button
 */
if (!is_user_logged_in()) {
    add_filter('comment_form_defaults', function($submit_field){
		$submit_field['submit_field'] = '<div class="g-recaptcha" data-sitekey="[your_site_key]"></div><br>' . $submit_field['submit_field'];
		return $submit_field;
	});
}

/**
 * Google recaptcha check, validate and catch the spammer
 */
function is_valid_captcha($captcha) {
	$captcha_postdata = http_build_query(array(
							'secret' => '[your_secret_key]',
							'response' => $captcha,
							'remoteip' => $_SERVER['REMOTE_ADDR']));
	$captcha_opts = array('http' => array(
							'method'  => 'POST',
							'header'  => 'Content-type: application/x-www-form-urlencoded',
							'content' => $captcha_postdata));
	$captcha_context  = stream_context_create($captcha_opts);
	$captcha_response = json_decode(file_get_contents("https://www.google.com/recaptcha/api/siteverify" , false , $captcha_context), true);
	if ($captcha_response['success'])
		return true;
	else
		return false;
}
 
function verify_google_recaptcha() {
	$recaptcha = $_POST['g-recaptcha-response'];
	if (empty($recaptcha))
		wp_die( __("<b>ERROR:</b> please select <b>I'm not a robot!</b><p><a href='javascript:history.back()'>« Back</a></p>"));
	else if (!is_valid_captcha($recaptcha))
		wp_die( __("<b>Go away SPAMMER!</b>"));
	}
	if (!is_user_logged_in()) {
		add_action('pre_comment_on_post', 'verify_google_recaptcha');
}

Cuối cùng, chiêm ngưỡng thành quả của chúng ta:

Thêm Google Captcha vào form bình luận của WordPress - Hình 3

Trả lời


📁 Wordpress
🔖 ,