Với các loại captcha đơn giản thì chúng ta có thể sử dụng một số dịch vụ trung gian vượt qua khá dễ dàng. Để chặn đứng các tool Spam Google đã cho ra 1 Captcha mới là reCaptcha và được nâng cấp bảo mật, ngăn chặn tuyệt đối các chương trình Spam tự đông.
Vì vậy, reCaptcha giúp website tránh Hacker lợi dụng điểm yếu này để Spam, chiếm dụng tài nguyên cũng như hack website
Hướng dẫn Đă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/create để 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.
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 reCaptcha trả về từ Google
Phần này chúng ta sẽ đi qua ví dụ sau nhé:
//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';
}
}
?>
< form action=
""
method=
"POST"
>
class
=
"g-recaptcha"
data-sitekey=
""
>
< input type=
"submit"
name=
"submit"
value=
"submit"
>
Sau khi tạo form trên chúng ta sẽ có
Như vậy chúng tôi đã hướng dẫn cách thêm reCaptcha vào website code thuần. Thao tác đơn giản nhưng nó sẽ giúp gia tăng bảo mật, trống được các công cụ tự động spam dữ liệu website.
Lưu ý:
Một số trường hợp các nhà cung cấp dịch vụ Hosting / VPS / Server chặn/không cài đặt hàm file_get_contents trong hệ thống. Chúng ta có thể sử dụng curl sau.
$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';
}
}?>