Tích hợp Google reCAPTCHA vào PHP

1.Google reCAPTCHA là gì?

Nhằm để ngăn chặn spammers, bots “phá hoại” website của bạn, CAPTCHA đã ra đời. Theo truyền thống CAPTCHA là một hình ảnh với dòng các chữ khó phân tích bởi một chương trình tự động, người dùng phải nhập lại dòng chữ giống với chữ trên hình ảnh để chứng minh họ không phải là máy. CAPTCHA truyền thống có thể đáp ứng được yêu cầu đặt ra tuy nhiên đôi khi khá phiền phức, các dòng chữ CAPTCHA đôi khi rất khó đọc đối với người dùng.

Do đó, Google đã mua lại và phát triển dịch vụ reCAPTCHA. Với giao diện dễ sử dụng và dễ dàng tích hợp vào website, Google reCAPTCHA dần trở thành dịch vụ CAPTCHA phổ biến trên thế giới.

Tích hợp Google reCAPTCHA vào PHP 12
Cách xác thực Google reCAPTCHA vô cùng đơn giản

Hình minh họa dưới đây mô tả nguyên tắc hoạt động của reCAPTCHA:

Tích hợp Google reCAPTCHA vào PHP 13
  1. Trên form nhập dữ liệu, có chứa Google reCAPTCHA.
  2. Khi người dùng check vào “I’m not a robot”, một Ajax request sẽ tự động gửi tới dịch vụ Google reCAPTCHA và nhận được một mã số xác thực nó được lưu trữ trên một Hidden field (g-recaptcha-response) của form. Tất cả những gì người dùng phải làm là check vào nút “I’m not a robot” thay vì phải đọc một dòng chữ khó đọc được tạo ra bởi CAPTCHA truyền thống.
  3. Người dùng nhấn nút Submit form, Server sẽ xử lý dữ liệu người dùng gửi tới, tại đây chương trình sẽ tạo một request có chứa thông tin mã xác thực ở bước trên để gửi tới dịch vụ Google reCAPTCHA để kiểm chứng lại mã. Dịch vụ Google reCAPTCHA sẽ gửi lại kết quả xác minh.

2.Cài đặt Google reCAPTCHA

Ở bài viết này, mình sẽ hướng dẫn các bạn tích hợp Google reCAPTCHA vào website sử dụng PHP.

Bước 1: Đăng kí và tạo API

Đầu tiên, bạn cần phải đăng kí và tạo API tại đây: https://www.google.com/recaptcha/admin

huynhhieu.com screen shot 2019 05 31 at 7.42.21 pm 201905

Chọn loại reCAPTCHA bạn muốn, ở đây mình chọn reCAPTCHA v2 -> “I’m not a robot” Checkbox. Bạn có thể tìm hiểu các loại reCAPTCHA ở đây: https://developers.google.com/recaptcha/docs/versions

Sau khi nhấn Submit, 1 màn hình chứa Site KeySecret Key sẽ hiện ra

Tích hợp Google reCAPTCHA vào PHP 14

Bước 2: Thêm Google reCAPTCHA vào website

Chèn thư viện Google reCAPTCHA vào website

<script src='https://www.google.com/recaptcha/api.js' async defer ></script>

Dán đoạn này vào vị trí bạn muốn hiển thị Google reCAPTCHA. Thay thế “site_key” bằng mã Site Key bạn đã tạo bên trên.

<div class="g-recaptcha" data-sitekey="site_key"></div>

Bước 3: Viết mã xử lí Google reCAPTCHA

Hãy thử refresh lại website, bạn sẽ thấy Google reCAPTCHA đã hiển thị. Nhưng nó vẫn chưa hoạt động được, bước tiếp theo bạn cần phải viết đoạn mã để xử lí như sau:

 if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response']))
  {
        $secret = 'secret_key'; //Thay thế bằng mã Secret Key của bạn
        $verify_response = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']);
        $response_data = json_decode($verify_response);
        if($response_data->success)
        {
            $message = 'Xác thực thành công';
        }
        else
        {
            $message = 'Không thể xác thực, vui lòng thử lại';
        }
   }

Chúc bạn thành công !

[su_button url=”https://demo.huynhhieu.com/google-recaptcha.cgi” target=”blank” style=”flat” center=”yes” icon=”icon: eye”]Xem demo[/su_button]