Lỗi wordpress liên quan đến google.com recaptcha api siteverify

Thêm reCAPTCHA vào form đăng nhập đăng ký Wordpress không cần dùng Plugin bảo vệ website an toàn hơn, giúp bạn nâng cao kiến thức lập trình về Wordpress

Sau khi mình làm 3 bài viết hướng dẫn tạo trang Đăng nhập, Đăng ký, Đăng bài cho wordpress không cần dùng plugin, có khá nhiều bình luận hỏi cách tích hợp thêm reCAPTCHA vào để chống Spam. Vậy nên bài này mình sẽ giúp các bạn giải quyết được vấn đề trên.

Lỗi wordpress liên quan đến google.com recaptcha api siteverify

Thêm reCAPTCHA vào form đăng nhập đăng ký WordPress

– Đầu tiên các bạn truy cập trang web này: https://www.google.com/recaptcha/admin

Lỗi wordpress liên quan đến google.com recaptcha api siteverify
– Nhập Label và Domain bạn cần thêm reCAPTCHA rồi chọn Register

– Sau khi chọn Register Google sẽ cho bạn các thông tin sau:

Lỗi wordpress liên quan đến google.com recaptcha api siteverify

Link Script

Đoạn script trên chèn vào giữa cặp thẻ

nằm trong file header.php ở thư mục theme bạn đang dùng

Đoạn HTML

Đoạn HTML này chèn vào trong form bạn cần thêm reCAPTCHA

Site key

6Le8DSETAAAAAK6JTk-zJyah8ZH-ujGzeYbbbyDL

Đoạn này chính là data-sitekey ở đoạn HTML bên trên

Secret key 6Le8DSETAAAAAPz2a2H9bewOu-UtaqZ1x5eePU73 Đoạn mã này rất quan trọng nó để check tham số Secret xem có trùng đoạn mã bên trên hay không

Bây giờ bạn mở file đăng ký đăng nhập hoặc đăng bài của bạn cần thêm reCAPTCHA Phần xử lý form bạn cần thêm các đoạn code này :

if(isset($_POST['g-recaptcha-response'])){ $vnkings_tut_captcha=$_POST['g-recaptcha-response']; } if(!$vnkings_tut_captcha){ echo 'Bạn chưa xác thực reCAPTCHA!.'; exit; } $kiemtra=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=Ma_Secret_Cua_Ban&response=".$vnkings_tut_captcha."&remoteip=".$_SERVER['REMOTE_ADDR']); if($kiemtra.success==false) { echo 'Bạn đang làm gì vậy ?'; exit; }else{ // code xử lý đăng ký }

Hãy thay Ma_Secret_Cua_Ban thành mã Secret bên trên của bạn

Giải thích :

  • https://www.google.com/recaptcha/api/siteverify: đây chính là API Request của Google cho bạn
  • 0, 1, 2: các tham số giúp google xác định được có đúng là người dùng hay không hay Boot
  • 3: Nếu xác định là người dùng trả về là sai thì dừng xử lý form đăng ký
  • else{}: tiếp tục form xử lý đăng nhập, đăng ký, hoặc đăng bài…

Cuối cùng: đây là ví dụ tổng quan cho trang đăng ký thành viên của mình:

Lỗi wordpress liên quan đến google.com recaptcha api siteverify

Template Name: Đăng Ký / ?> Chào display_name; ?>!, Bạn đã có tài khoản, bạn có muốn thoát tài khoản này không ?

escape(trim($_POST['pwd1'])); $pwd2 = $wpdb->escape(trim($_POST['pwd2'])); $email = $wpdb->escape(trim($_POST['email'])); $username = $wpdb->escape(trim($_POST['username'])); // Xác Thực reCAPTCHA if(isset($_POST['g-recaptcha-response'])){ $vnkings_tut_captcha=$_POST['g-recaptcha-response']; } if(!$vnkings_tut_captcha){ echo 'Bạn chưa xác thực reCAPTCHA!.'; exit; } $kiemtra=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=Ma_Secret_Cua_Ban=".$vnkings_tut_captcha."&remoteip=".$_SERVER['REMOTE_ADDR']); if($kiemtra.success==false) { echo 'Bạn đang làm gì vậy ?'; exit; } // Kết thúc reCAPTCHA if( $email == "" || $pwd1 == "" || $pwd2 == "" || $username == "") { $err = 'Vui lòng không bỏ trống những thông tin bắt buộc!'; } else if(!filter_var($email, FILTER_VALIDATE_EMAIL)) { $err = 'Địa chỉ Email không hợp lệ!.'; } else if(email_exists($email) ) { $err = 'Địa chỉ Email đã tồn tại!.'; } else if($pwd1 <> $pwd2 ){ $err = '2 Password không giống nhau!.'; } else if (!isset( $_POST['post_nonce_field'] ) && wp_verify_nonce( $_POST['post_nonce_field'], 'post_nonce' )){ $err = 'Bạn đang làm gì vậy ?'; } else { $user_id = wp_insert_user( array ('user_pass' => apply_filters('pre_user_user_pass', $pwd1), 'user_login' => apply_filters('pre_user_user_login', $username), 'user_email' => apply_filters('pre_user_user_email', $email), 'role' => 'subscriber' ) ); if( is_wp_error($user_id) ) { $err = 'Error on user creation.'; } else { do_action('user_register', $user_id); $success = 'Bạn đã đăng ký thành công!'; } } } ?>
'.$err.'

'; endif; ?> '.$success.'

'; endif; ?>

Nếu đã thử mà Bạn không tự làm được, hãy để lại comment cho Mình để chúng ta cùng giải quyết! Chúc các bạn thành công!