01/10/2018, 16:58

Tích hợp google reCAPTCHA vào website

Như các bạn biết Captcha là chức năng không thể thiếu trong khi làm website,nó giúp chúng ta tránh được các tool tự động có mục đích xấu,để lợi dụng làm hao tốn tài nguyện hoặc spam cơ sở dữ liệu . Đối với các captcha đơn giản thì hoàn toàn có thể sử dụng các dịch vụ trung gian vượt qua ...

Như các bạn biết Captcha là chức năng không thể thiếu trong khi làm website,nó giúp chúng ta tránh được các tool tự động có mục đích xấu,để lợi dụng làm hao tốn tài nguyện hoặc spam cơ sở dữ liệu .

Đối với các captcha đơn giản thì hoàn toàn có thể sử dụng các dịch vụ trung gian vượt qua được.Hiện nay, google đã cho ra 1 loại mã captcha mới đó là Recaptcha được nâng cấp lên,đối với loại captcha này rất bảo mật,ngăn chặn tuyệt đối các chương trình tự động gửi dữ liệu sang. Vì vậy, nó giúp website bạn tránh trường hợp kẻ xấu lợi dụng và hack vào website của bạn. Điều này, giúp website của bạn bảo mật hơn và an toàn cho người sử dung.

Đăng ký Google recaptcha

Để sử dụng được dịch vụ recaptcha của google chúng ta cần vào link sau https://www.google.com/recaptcha/admin để thực hiện tạo Site key và Secret key

Sau khi nhập thông tin xong các bạn sẽ có được 2 thông tin trong hình:

Cài đặt google reCAPTCHA lên website

Bước 1: Chèn đoạn script sau vào trong thẻ head hoặc trong thẻ body, trong đó vi là cài đặt ngôn ngữ tiếng Việt, bạn có thể tham khảo danh sách các ngôn ngữ tại https://developers.google.com/recaptcha/docs/language.

<script src="https://www.google.com/recaptcha/api.js?hl=vi"></script>

Bước 2: Khi muốn hiển thị google reCAPTCHA ở đâu các bạn chèn nội dung sau vào

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

Trong đó thì Site key đã được google cung cấp ở bước trên

Lấy dữ liệu trả về từ google

Phần này chúng ta sẽ đi qua ví dụ sau nhé:

<?php
//cấu hình thông tin do google cung cấp
$api_url     = 'https://www.google.com/recaptcha/api/siteverify';
$site_key    = '6LfNABYTAAAAAPICpbw4l4YbZ7ncFj-javBVAstB';
$secret_key  = '6LfNABYTAAAAADRDMAycxF7ejcelEH7jz1UgCN3i';
  
//kiem tra submit form
if(isset($_POST['submit']))
{
    //lấy dữ liệu được post lên
    $site_key_post    = $_POST['g-recaptcha-response'];
      
    //lấy IP của khach
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        $remoteip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $remoteip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        $remoteip = $_SERVER['REMOTE_ADDR'];
    }
     
    //tạo link kết nối
    $api_url = $api_url.'?secret='.$secret_key.'&response='.$site_key_post.'&remoteip='.$remoteip;
    //lấy kết quả trả về từ google
    $response = file_get_contents($api_url);
    //dữ liệu trả về dạng json
    $response = json_decode($response);
    if(!isset($response->success))
    {
        echo 'Captcha khong dung';
    }
    if($response->success == true)
    {
        echo 'Captcha dung';
    }else{
        echo 'Captcha khong dung';
    }
}
?>
<script src="https://www.google.com/recaptcha/api.js?hl=vi"></script>
<form action="" method="POST">
    <div class="g-recaptcha" data-sitekey="<?php echo $site_key?>"></div>
    <input type="submit" name="submit" value="submit">
</form>

 Sau khi tạo form trên chúng ta sẽ có

Trong phần code trên mình đã giải thích ngay trên đó Kết luận: Như vậy mình đã hướng dẫn các bạn cách thêm google recaptcha vào website,nó tuy đơn giản nhưng cũng rất quan trọng đó nhé. Ưu điểm: Bảo mật , dễ cài đặt, trống được các công cụ tự động gửi dữ liệu lên website.

Lưu ý:

Trong một số trường hợp nhất định nhà cung cấp dịch vụ sẽ ngắt hàm file_get_contents trong hệ thống. Giải pháp tình thế lúc này là bạn có thể sử dụng curl như sau.

<?php 
	$response = FALSE;
	if(function_exists('file_get_contents')){
		$response = file_get_contents($api_url);
	}
	if($response===FALSE && function_exists('curl_init')){
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
		curl_setopt( $ch, CURLOPT_HEADER, 0 );
		curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
		curl_setopt( $ch, CURLOPT_URL, $api_url );
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);  
		$response = curl_exec( $ch );
		curl_close($ch);
	}
	if($response==FALSE){
		echo 'Captcha khong dung';
	}else {
		$response = json_decode($response);
		if(!isset($response->success)){
			echo 'Captcha khong dung';
		}
		if($response->success == true){
			echo 'Captcha dung';
		}
		else{
        	echo 'Captcha khong dung';
    	}
	}
?>
0