Cách tích hợp "No CAPTCHA reCAPTCHA" vào Trang web của bạn (ok)
Last updated
Last updated
Đọc thêm: https://app.gitbook.com/@wordpress-lionel/s/project/recaptcha-v2-for-contact-form-7-ok
Đã thực hành :)
Thư viện php họ dùng trong bài biết này :_
C:\Users\Administrator\AppData\Local\Temp\scp16972\domains\dev.onter.site\public_html\ping\index.php
C:\Users\Administrator\AppData\Local\Temp\scp08146\domains\dev.onter.site\public_html\ping\recaptchalib.php
Bạn có thể nhìn thấy ví dụ thực tế của nó trên web, ví dụ như trên trang submit của @materialup.
Chúng ta hãy đi thẳng vào vấn đề và bắt đầu với No CAPTCHA.
Bên dưới các khoá bạn sẽ thấy một số đoạn để bao gồm reCAPTCHA trên trang web của bạn. Đầu tiên đó là JavaScript:
1
<script
src='
https://www.google.com/recaptcha/api.js
'></script>
Bạn cũng có thể định nghĩa một trong 40 ngôn ngữ được hỗ trợ mà bạn đang sử dụng bằng cách thêm một tham số vào chuỗi. Ở đây chúng ta đang thêm es
, nó sẽ cung cấp cho chúng ta một reCAPTCHA ngôn ngữ Tây Ban Nha:
1
<script
src='
https://www.google.com/recaptcha/api.js?hl=es
'></script>
Đặt thẻ script này vào cuối trang (hoặc ngay bên dưới form nơi reCAPTCHA sẽ xuất hiện, tùy thuộc vào cách bạn ưu tiên tải nội dung của bạn).Advertisement
Tiếp theo là phần mẫu cái mà bạn sẽ cần phải thêm vào markup của form bất cứ nơi nào bạn muốn reCAPTCHA xuất hiện:
1
<div
class="g-recaptcha"
data-sitekey="6LcePAATAAAAAGPRWgx90814DTjgt5sXnNbV5WaW"></div>
Lưu ý: thuộc tính data-sitekey
sẽ giữ giá trị của khoá của bạn, không phải ví dụ mẫu này.
Để biết thêm thông tin chi tiết về cấu hình reCAPTCHA của bạn hãy tìm hiểu tại developers.google.com.
Bây giờ chúng ta đã có các thành phần ban đầu, đến lúc để đưa chúng vào môi trường làm việc.
Chúng ta hãy đặt thẻ script và phần mẫu của chúng ta vào một form đơn giản:
010203040506070809101112131415161718192021222324252627
<!DOCTYPE html><html lang="en"> <head> <title>How to Integrate Google “No CAPTCHA reCAPTCHA” on Your Website</title> </head>
<body>
<form action=""
method="post">
<label
for="name">Name:</label> <input name="name"
required><br />
<label
for="email">Email:</label> <input name="email"
type="email"
required><br />
<div
class="g-recaptcha"
data-sitekey="6LcePAATAAAAAGPRWgx90814DTjgt5sXnNbV5WaW"></div>
<input type="submit"
value="Submit"
/>
</form>
<!--js--> <script src='
https://www.google.com/recaptcha/api.js
'></script>
</body></html>
Để minh hoạ thử nghiệm reCAPTCHA đó đã vượt qua, chúng ta sẽ cần chạy một số kiểm tra bên phía máy chủ. Trong trường hợp này, chúng ta sẽ làm điều đó với PHP, do đó, hãy lưu tập tin này trong một dự án mới thành index.php
.Advertisement
Bạn sẽ thấy rằng phương thức của form là post
, vì vậy khi chúng ta submit dữ liệu form sẽ được trả về cho trang này trong một mảng các biến. Chúng ta có thể xuất các biến đó bằng cách lặp qua chúng, do đó hãy thêm các thứ sau đây vào đâu đó trong trang của bạn:
12345
<?php foreach
($_POST
as
$key
=>
$value) { echo
'<p><strong>'
.
$key.':</strong> '.$value.'</p>'; }?>
Bạn sẽ thấy giá trị trả về không chỉ name
và email
, mà còn một giá trị g-recaptcha-response
. Nếu bạn không hoàn thành bài kiểm tra CAPTCHA thì giá trị này sẽ được để trống, nhưng nếu bạn đã tích chọn hộp "I’m not a robot" bạn sẽ thấy một chuỗi rất lớn gồm các ký tự.
Đó là giá trị mà chúng ta cần gửi cho Google để nó có thể được xác nhận, vì vậy hãy làm điều đó tiếp theo.
Thật hạnh phúc, nhóm phát triển của Google đã làm được những công việc khó khăn cho chúng ta ở đây, vì vậy hãy tìm đến dự án ReCAPTCHA trên Github và lấy một bản sao của thư viện recaptchalib.php. Đặt nó trong thư mục gốc của dự án và sau đó tham chiếu đến nó ở đầu tập tin index.php
của bạn:
123456
<?php
// grab recaptcha libraryrequire_once
"recaptchalib.php";
?>
Thư viện này có chứa một tập hợp các hàm gửi g-rerecaptcha-response
(cùng với khóa bí mật của chúng ta) đến Google thông qua một yêu cầu HTTP. Sau đó, chúng thu thập các phản hồi, kiểm tra xem CAPTCHA có thành công hay không. Để sử dụng cái này, đầu tiên chúng ta cần thiết lập một vài biến, trước thẻ đóng PHP:
12345678
// your secret key$secret
=
"6LcePAATAAAAABjXaTsy7gwcbnbaF5XgJKwjSNwT";
// empty response$response
= null;
// check secret key$reCaptcha
=
new
ReCaptcha($secret);
ReCaptcha()
kiểm tra xem khóa bí mật của chúng ta có hiện diện không. Nếu không nó tắt tiến trình và tư vấn cho chúng ta đi đến và nhận một cái. Sau đó chúng ta chạy các chi tiết của chúng ta thông qua những thứ sau đây:
1234567
// if submitted check responseif
($_POST["g-recaptcha-response"]) { $response
=
$reCaptcha->verifyResponse( $_SERVER["REMOTE_ADDR"], $_POST["g-recaptcha-response"] );}
Giả sử tất cả đều ổn với form được submit của chúng ta, biến $response
sẽ báo cáo trở lại với "success" và chúng ta có thể tiếp tục xử lý dữ liệu form. Nó có thể trông như thế này: loại bỏ các bit nơi chúng ta lặp qua dữ liệu form, sau đó thêm kiểm tra sau đây bên trên form:
12345
<?php if
($response
!= null &&
$response->success) { echo
"Hi "
.
$_POST["name"] .
" ("
.
$_POST["email"] .
"), thanks for submitting the form!"; }
else
{?>
Cuối cùng, thêm một thẻ đóng PHP sau form:
1
<?php } ?>
Điều này sẽ hiển thị form, trừ khi nó đã được submit thành công, trong trường hợp đó nó sẽ hiển thị một thông điệp cảm ơn nhỏ. Dưới đây là bản demo sau cùng.
Đây là một cài đặt PHP rất thô sơ và dễ dàng của No CAPTCHA reCAPTCHA. Nó mở ra cho những cải tiến, nhưng hy vọng nó sẽ giúp cho bạn nắm bắt được những điều cơ bản. Thư viện thuộc về nhóm phát triển của Google và tôi cũng gởi lời cảm ơn đến Matt Aussaguel đã chỉ cho tôi biết.
ReCAPTCHA 1.0.0 trêm Github
Bạn có phải là một robot? Giới thiệu "No CAPTCHA reCAPTCHA", Google Security Blog
Plugin reCaptcha WordPress reCAPTCHA Integration cho đăng nhập, đăng ký, form bình luận, Ninja Forms và Contact Form 7
Các input CAPTCHA có lẽ là phổ biến nhất trong số tất cả các trải nghiệm phiền phức trên web. Chúng làm tốn công đối với đa số người dùng, hãy để một mình người khiếm thị hay bất cứ ai dựa trên công nghệ hỗ trợ như trình đọc màn hình để truy cập web. Tuy vậy, thật đáng buồn, CAPTCHA tuyệt đối quan trọng trong cuộc chiến chống thư rác.Một tội ác cần thiết (cám ơn những người gửi thư rác)
Trớ trêu thay, mặc dù các CAPCHA "văn bản méo" thường thấy gây khó khăn cho việc đọc của người dùng, nhưng công nghệ trí tuệ nhân tạo hiện đại lại không mấy khó khăn để giải quyết chúng. Google thậm chí còn sử dụng công nghệ tương tự để đọc số nhà, tín hiệu đường để xác nhận các địa điểm Google Street View!Những chú robot của Google có thể đọc chính xác những điều này
Đó chỉ là suy luận do đó mà các nhà phát triển của Google đã đưa ra các giải pháp CAPTCHA tốt nhất cho đến lúc này, vào cuối năm 2014. No CAPTCHA reCAPTCHA không đòi hỏi gì hơn ngoài một hành động chạm ngón tay, một cú nhấp chuột, hoặc tập trung input với bàn phím của bạn và nhấn phím cách.
Trường hợp nào cũng đều đơn giản cả, nhưng nếu phân tích rủi ro của Google vẫn chưa thể đảm bảo rằng bạn là con người, một dấu nhắc thứ hai sẽ xuất hiện.
Đầu tiên, chúng ta cần một khóa API, vì vậy hãy truy cập vào https://www.google.com/recaptcha/admin. Để truy cập vào trang này, bạn sẽ cần phải đăng nhập vào một tài khoản Google. Bạn sẽ được yêu cầu đăng ký trang web của bạn, do đó hãy cung cấp cho nó một cái tên thích hợp, sau đó liệt kê tên miền (ví dụ tutsplus.com) nơi mà reCAPTCHA cụ thể này sẽ được sử dụng. Những tên miền phụ (như webdesign.tutsplus.com và code.tutsplus.com) được tự động tính toán.
Khi thực hiện điều đó xong, bạn sẽ được cấp một khóa trang web (Site key) và khoá bí mật (Secret key) của nó:
Có các thuộc tính khác mà bạn có thể thêm vào để tùy biến giao diện và chức năng của reCAPTCHA tại thời điểm này. Ví dụ: thêm data-theme="dark"
vào div
này sẽ cung cấp cho bạn một phiên bản tối, có thể phù hợp hơn với giao diện người dùng của bạn:
Ở đây, chúng ta đã sử dụng một cấu trúc trang với một form có chứa một input name
, một input email
và một nút submit. Không có phong cách gì ở đây cả, vì nó không thực sự cần thiết cho hướng dẫn này.Bạn sẽ có một cái gì đó giống như thế này
Điều này lấy mỗi cặp khóa/giá trị có mặt trong mảng $_POST
của chúng ta và xuất chúng với một ít định dạng. Bây giờ khi bạn submit form bạn nhìn thấy một cái gì đó như sau: