Sử dụng Google reCAPTCHA với PHP

Cập nhật lần cuối vào

Google reCAPTCHA là một trong những hệ thống captcha phổ biến hiện nay, lúc trước thì reCAPTCHA hiển thị những đoạn mã rất phức tạp nhưng cho đến thời điểm hiện tại thì Google sẽ xác minh người dùng chỉ thông qua một cú click chuột đơn giản, thậm chí là chạy xác minh ngầm, bạn không cần làm gì cả mà Google vẫn có thể nhận dạng được bạn là người hay máy tính.

Google reCAPTCHA

Đối với các form đăng ký, đăng nhập hoặc form bình luận, bạn nên để thêm trường captcha vào để xác thực là người dùng. Khi sử dụng reCAPTCHA phiên bản mới, người dùng có thể thông báo họ là người mà không cần phải gõ mã captcha. Họ chỉ cần nhấn một cú click chuột để xác nhận không phải là máy tính. Vì vậy, reCAPTCHA có thể giúp bạn hạn chế spam mà vẫn giữ được trải nghiệm của người dùng.

Captcha là gì?

Captcha là 1 hình ảnh dùng để phân biệt giữa người và chương trình máy tính. Captcha dùng để xác định liệu có phải là một người dùng đang truy cập hệ thống hay một chương trình máy tính đang truy cập hệ thống. CAPTCHA được viết tắt từ cụm từ: “Completely Automated Public Turing test to tell Computers and Humans Apart.” Ngày nay, captcha được sử dụng rộng rãi trên các website, sử dụng trong các việc như: đăng ký, download, upload,… Đây là biện pháp để các Webmaster chống lại việc thông tin bị đánh cắp hoặc bị SPAM từ người dùng. Captcha là 1 dạng hình ảnh bao gồm các con số trong bảng chữ cái, mà những con số này đã được làm biến dạng để cho chỉ có con người mới có thể đọc được. Điều này để phân biệt đâu là con người và đâu là 1 chương trình máy tính, vì chúng ta có thể đọc và hiểu captcha 1 cách dễ dàng, còn chương trình máy tính thì không thể, đó là lý do captcha được sử dụng rộng rãi ngày nay.

Demo captcha

Bên trên là hình ảnh demo một captcha, còn rất nhiều kiểu hiển thị khác nhau nữa, nhưng đại khái nó là như vậy.

Cấu hình tùy chỉnh reCAPTCHA của Google

Trước tiên bạn phải hiểu reCAPTCHA là gì? Đây là dịch vụ CAPTCHA miễn phí được cung cấp bởi Google. Hệ thống này sẽ giúp bạn tích hợp vào các dự án của bạn nhằm phòng tránh trường hợp SPAM, CAPTCHA là cách để hệ thống có thể phân biệt được người dùng là người hay máy tính.

Google reCAPTCHA phiên bản cũ
Google reCAPTCHA phiên bản cũ

Dịch vụ này rất phổ biến hiện nay, đặc biệt nó hoàn toàn miễn phí cho người dùng, bạn có thể đăng ký sử dụng reCAPTCHA miễn phí tại đây. Để sử dụng reCAPTCHA trên trang web của bạn thì bạn cần phải đăng ký API key. Bạn có thể quản lý danh sách các API key bạn đã tạo hoặc tạo mới API key tại địa chỉ này.

Đăng ký Google reCAPTCHA
Đăng ký Google reCAPTCHA

Sau khi bạn đăng ký thành công thì bạn vào phần quản lý để lấy thông tin Site key và Secret key. Đây là 2 thứ quan trọng để bạn tích hợp reCAPTCHA vào trang web.

Lấy API key Google reCAPTCHA
Lấy API key Google reCAPTCHA

Sau khi đã chuẩn bị mọi thứ đâu vào đấy rồi thì bạn cần load đoạn script của reCAPTCHA vào giữa thẻ head trên trang web của bạn.

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

Phần tiếp đến đó là bạn dùng Site key để hiển thị reCAPTCHA lên form của bạn. Ở đây mình sẽ ví dụ một form liên hệ đơn giản như sau:

<form action="" method="POST">
    <input type="text" name="name" value="" />
    <input type="text" name="email" value="" />
    <textarea type="text" name="message"></textarea>
    <div class="g-recaptcha" data-sitekey="6LdQkjsUAAAxxxxxxxxxxxKKYCGhezQL0"></div>
    <input type="submit" name="submit" value="SUBMIT">
</form>

Bạn chú ý mục điền Site key nhé, thay bằng thông tin mà bạn đã đăng ký cho trang web bạn muốn sử dụng. Cuối cùng là phần xác thực xem thông tin người dùng cung cấp khi submit form có đúng hay không.

<?php
if ( isset( $_POST['submit'] ) && ! empty( $_POST['submit'] ) ):
	if ( isset( $_POST['g-recaptcha-response'] ) && ! empty( $_POST['g-recaptcha-response'] ) ):
		//your site secret key
		$secret = '6LdQkjsUAAxxxxxxxxxxxxxxxxxxxxxx8yNnZH';
		//get verify response data
		$verifyResponse = file_get_contents( 'https://www.google.com/recaptcha/api/siteverify?secret=' . $secret . '&response=' . $_POST['g-recaptcha-response'] );
		$responseData   = json_decode( $verifyResponse );
		if ( $responseData->success ):
			//contact form submission code
			$name    = ! empty( $_POST['name'] ) ? $_POST['name'] : '';
			$email   = ! empty( $_POST['email'] ) ? $_POST['email'] : '';
			$message = ! empty( $_POST['message'] ) ? $_POST['message'] : '';

			$to          = '[email protected]';
			$subject     = 'New contact form have been submitted';
			$htmlContent = "
                <h1>Contact request details</h1>
                <p><b>Name: </b>" . $name . "</p>
                <p><b>Email: </b>" . $email . "</p>
                <p><b>Message: </b>" . $message . "</p>
            ";
			// Always set content-type when sending HTML email
			$headers = "MIME-Version: 1.0" . "\r\n";
			$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
			// More headers
			$headers .= 'From:' . $name . ' <' . $email . '>' . "\r\n";
			//send email
			@mail( $to, $subject, $htmlContent, $headers );

			$succMsg = 'Your contact request have submitted successfully.';
		else:
			$errMsg = 'Robot verification failed, please try again.';
		endif;
	else:
		$errMsg = 'Please click on the reCAPTCHA box.';
	endif;
else:
	$errMsg  = '';
	$succMsg = '';
endif;

Trong đoạn code PHP bên trên thì bạn cần thay Secret key thành key của bạn. Đây chỉ là một ví dụ đơn giản để demo cho cách hoạt động của reCAPTCHA, bạn cần phải chỉnh sửa lại để phù hợp với mục đích và giao diện trên trang web của mình.

Như vậy là bạn đã tích hợp được Google reCAPTCHA vào trang web chỉ với vài thao tác đơn giản rồi đấy. Nếu bạn nào chưa làm được thì gửi lại bình luận để mọi người giúp đỡ nhé. Chúc bạn thành công.

Theo dõi
Thông báo của
guest

0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận