首頁  >  文章  >  後端開發  >  在PHP中使用Google reCAPTCHA進行驗證

在PHP中使用Google reCAPTCHA進行驗證

WBOY
WBOY原創
2023-06-19 17:38:311967瀏覽

在現代網路世界中,網站的安全性以及使用者隱私的保護越來越成為重要議題。其中,人機驗證此技術方法已成為防範惡意攻擊行為的不可或缺的方式之一。 Google reCAPTCHA,是一個被廣泛應用於人機驗證的工具,其概念已經深入人心,甚至在我們每天使用的許多網站上都能夠看到其存在的身影。在本文中,我們將探討如何在PHP中使用Google reCAPTCHA進行驗證。

Google reCAPTCHA 的工作原理

Google reCAPTCHA最初是由Carnegie Mellon大學的研究團隊開發的人類反機器人電腦程序,後來被Google收購並改進。

它的工作原理是透過向用戶展示一個包含文字、圖像或音訊等複雜的問題,並要求用戶回答這個問題,從而識別出正在訪問網站的是人而非機器人。此外,Google reCAPTCHA還可以根據使用者的行為模式和瀏覽器指紋等因素,將訪客分為低風險、中風險和高風險三個等級,從而提高了驗證的準確性並防止惡意攻擊。

在PHP中使用Google reCAPTCHA進行驗證

在使用Google reCAPTCHA進行驗證之前,我們需要先從Google reCAPTCHA的官網(https://www.google.com/recaptcha/about )申請一個reCAPTCHA的Site Key和Secret Key。 Site Key用於在用戶端展示驗證訊息,Secret Key用於在後台校驗用戶的提交資訊。這些資訊是使用reCAPTCHA需要必須的,我們需要將他們妥善保存。

接下來,我們將重點放在PHP中如何使用Google reCAPTCHA進行驗證。我們以一個簡單的註冊表單為例,該表單需要使用者輸入使用者名稱、密碼和驗證碼才能進行註冊。具體步驟如下:

  1. 在HTML中嵌入Google reCAPTCHA的JavaScript程式碼
<head>
    <script src="https://www.google.com/recaptcha/api.js" async defer></script>
</head>
<body>
    <form>
        <!--其他表单元素-->
        <div class="g-recaptcha" data-sitekey="在这里填入你的Site Key"></div>
        <button type="submit" name="submit">注册</button>
    </form>
</body>

上述程式碼中引入了Google reCAPTCHA的JavaScript文件,並在表單中新增了一個class 為「g-recaptcha」、data-sitekey屬性值為我們在reCAPTCHA官網上申請到的Site Key的div元素。我們將這個元素嵌入表單中,這樣當使用者點擊「註冊」按鈕時,就會觸發Google reCAPTCHA的驗證功能,完成使用者是否為人類的判斷。

  1. 驗證驗證碼是否正確
<?php
if(isset($_POST['submit'])){//当用户按下注册按钮
    $username = $_POST['username'];
    $password = $_POST['password'];
    $captcha = $_POST['g-recaptcha-response'];
    
    $url = "https://www.google.com/recaptcha/api/siteverify";//Google reCAPTCHA的工作URL
    $data = array(
        'secret' => '在这里填入你的Secret Key',
        'response' => $captcha
    );
    $options = array(
        'http' => array(
            'header' => "Content-type: application/x-www-form-urlencoded
",
            'method' => 'POST',
            'content' => http_build_query($data)
        )
    );
    $context = stream_context_create($options);
    $result = file_get_contents($url, false, $context);//向Google服务器发送POST请求

    $response = json_decode($result);//解码JSON响应
    if($response->success){//如果验证码正确
        //将用户信息插入数据库
    }
    else{
        echo "验证码出错,请检查输入";
    }
}
?>

以上程式碼中,我們在註冊的PHP處理腳本中,先取得使用者輸入的使用者名稱、密碼、reCAPTCHA驗證碼(即$_POST['username']$_POST['password']$_POST['g-recaptcha-response']),然後建構POST請求到Google reCAPTCHA的URL中,其中請求資料中包含了我們申請到的Secret Key和使用者提交的驗證碼。

接下來,我們使用file_get_contents()函數向Google reCAPTCHA伺服器發送POST請求,並解碼回應。回應的回傳值是一個JSON格式對象,其中success欄位表示使用者的驗證碼是否正確。如果驗證碼正確,就將使用者資訊插入資料庫;否則,將輸出一段錯誤訊息。

結語

Google reCAPTCHA可以簡單、快速地為網站提供安全性保障,我們在程式碼中實作Google reCAPTCHA時只需要幾行程式碼,就可以為我們的網站添加強大的驗證機制!

以上是在PHP中使用Google reCAPTCHA進行驗證的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn