04/10/2018, 18:00

Kết nối Google reCaptcha bằng PHP

Việc bắt người dùng nhập Captcha trước khi submit form sẽ giảm thiểu rất nhiều những thư spam từ các robot. Các bạn sẽ chẳng cần phải lập trình gì nhiều để tạo Captcha, mà có thể tận dụng ngay chức năng này từ Google. Hiện nay có rất nhiều trang web hay bog nổi tiếng cũng sử dụng chức năng này từ ...

Việc bắt người dùng nhập Captcha trước khi submit form sẽ giảm thiểu rất nhiều những thư spam từ các robot. Các bạn sẽ chẳng cần phải lập trình gì nhiều để tạo Captcha, mà có thể tận dụng ngay chức năng này từ Google. Hiện nay có rất nhiều trang web hay bog nổi tiếng cũng sử dụng chức năng này từ gã khổng lồ google. Trong bài viết này, mình sẽ chia sẻ cho các bạn từng bước cài đặt Google Captcha cho website.

Kết nối Google reCaptcha bằng PHP

Xem Demo | Download

Đầu tiên, chúng ta sẽ cần có API key, vào trang https://www.google.com/recaptcha/admin để đăng ký tên miền sẽ sử dụng captcha.

Kết nối Google reCaptcha bằng PHP

Sau khi đăng ký xong, các bạn sẽ nhận được site keysecret key:

Kết nối Google reCaptcha bằng PHP

Hoàn thành các bước trên, các bạn nhớ chèn đoạn script bên dưới vào bên trong thẻ <head> trong trang web của các bạn.

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

Và các bạn copy đoạn code sau và dán vào nơi mà các bạn muốn hiển thị captcha.

<div class="g-recaptcha" data-sitekey="YOUR SITE KEY"></div>

Để dễ hiểu, mình xin tổng hợp lại như sau :

<!DOCTYPE HTML>
<html>
<head>
<title>Google new reCaptcha</title>
<meta charset="UTF-8" />
<link type='text/css' rel='stylesheet' href='css/reset.css' />
<link type='text/css' rel='stylesheet' href='css/structure.css' />
<script src="https://www.google.com/recaptcha/api.js"></script>
</head>
<body>
<form class="box login" method="post" action="">
<fieldset class="boxBody">
  <label id="msg"><?php echo $message; ?></label>
  <label>Username</label>
  <input type="text" tabindex="1" name="username" value="demo" required>
  <label>
  <a href="#" class="rLink" tabindex="5">Forget your password?</a>Password
  </label>
  <input type="password" name="password" tabindex="2" value="demo" required>
</fieldset>
<div class="g-recaptcha" data-sitekey="YOUR SITE KEY"></div>
<footer>
  <input type="submit" class="btnLogin" value="Login" tabindex="4">
</footer>
</form>
<footer id="main">
</footer>
</body>
</html>

PHP

Đây là phần kiểm tra lại giá trị nhập của người dùng ở phần backend.

<?php
 
class GoogleRecaptcha 
{
    /* Google recaptcha API url */
    private $google_url = "https://www.google.com/recaptcha/api/siteverify";
    private $secret = 'YOUR_SECRET_KEY';
 
    public function VerifyCaptcha($response)
    {
        $url = $this->google_url."?secret=".$this->secret.
               "&response=".$response;
 
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($curl, CURLOPT_TIMEOUT, 15);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, TRUE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, TRUE); 
        $curlData = curl_exec($curl);
 
        curl_close($curl);
 
        $res = json_decode($curlData, TRUE);
        if($res['success'] == 'true') 
            return TRUE;
        else
            return FALSE;
    }
 
}
 
$message = 'Google reCaptcha';
 
if($_SERVER["REQUEST_METHOD"] == "POST")
{
    $response = $_POST['g-recaptcha-response'];
 
    if(!empty($response))
    {
          $cap = new GoogleRecaptcha();
          $verified = $cap->VerifyCaptcha($response);
 
          if($verified) {
            $message = "Captcha Success!";
          } else {
            $message = "Please reenter captcha";
          }
    }
}
?>

Mình hy vọng là các bạn sẽ thực hiện thành công chức năng này cho website của mình.

Tags: captcha

Chuyên Mục: PHP

Bài viết được đăng bởi webmaster

Bài liên quan

Kết nối Google reCaptcha bằng PHP

Việc bắt người dùng nhập Captcha trước khi submit form sẽ giảm thiểu rất nhiều những thư spam từ các robot. Các bạn sẽ chẳng cần phải lập trình gì nhiều để tạo Captcha, mà có thể tận dụng ngay chức năng này từ Google. Hiện nay có rất nhiều trang web hay bog nổi tiếng cũng sử dụng chức năng này từ ...

Trần Trung Dũng viết 3 tuần trước

Kết nối FTP bằng PHP

Lập trình PHP: Kết nối FTP Server bằng PHP . <? //connect to server if(!($ftp = ftp_connect("localhost"))) { print("Unable to connect!<br />n"); exit(); } print("Connected.<br ...

Vũ Văn Thanh viết 3 tuần trước

Cách mã hóa các kết nối OpenLDAP bằng STARTTLS

Giới thiệu OpenLDAP cung cấp dịch vụ thư mục LDAP linh hoạt và được hỗ trợ tốt. Tuy nhiên, out-of-the-box, chính máy chủ giao tiếp qua kết nối web không được mã hóa. Trong hướng dẫn này, chúng tôi sẽ trình bày cách mã hóa các kết nối tới OpenLDAP bằng STARTTLS để nâng cấp các kết nối thông thường ...

Trần Trung Dũng viết 09:46 ngày 19/09/2018

Xâm nhập máy tính không kết nối Internet bằng một chiếc điện thoại đơn giản

Bạn muốn xâm nhập máy tính cực kỳ an toàn? Bạn không cần kỹ thuật hoặc thiết bị tinh vi để làm điều đó: Để tấn công một máy tính được cho là có độ bảo mật cao, không bao giờ kết nối với mạng Internet, tất cả những gì bạn cần là một chiếc điện thoại di động; thậm chí đã lỗi thời. Các nhà nghiên ...

Trần Trung Dũng viết 23:26 ngày 17/09/2018

PHP kết nối với MySQL

PHP PHP 5 và các phiên bản sau có thể làm việc với một cơ sở dữ liệu MySQL bằng cách sử dụng: Phần mở rộng MySQLi (chữ “i” là viết tắt của cải tiến – improved). PDO (đối tượng dữ liệu PHP). Các phiên bản trước của PHP đã sử dụng phần mở rộng MySQL. Tuy ...

Vũ Văn Thanh viết 23:15 ngày 04/09/2018
0