基於 Laravel 整合隱形 reCAPTCHA

半夏發表於2017-06-13

隱形 reCaptcha 是谷歌基於 reCaptcha v2(No captcha)——使用者只需要點選“我不是機器人”的按鈕來證明自己是確確實實的人類而優化改進的一個版本,不需要與使用者互動,頁面後臺自發執行驗證。

隱形 reCaptcha,顧名思義便是與傳統相比不再嵌入驗證碼框與使用者互動以供驗證。同時,頁面底部將展示一個logo註明當前頁面使用到此技術(當然不想要也可以將其隱藏,但不推薦)。

簡單的頁面樣例:

本文將介紹基於 laravel 快速整合隱形 reCaptcha。

安裝

composer require albertcht/invisible-recaptcha

將下述服務提供者新增到 app/config/app.phpproviders 陣列中。

AlbertCht\InvisibleReCaptcha\InvisibleReCaptchaServiceProvider::class

配置

前提:谷歌網站申請 API 金鑰。

切記,申請時應當選擇隱形 reCaptcha。

當專案基本部署完成後,在根目錄下的 .env 檔案中新增:

INVISIBLE_RECAPTCHA_SITEKEY={siteKey}
INVISIBLE_RECAPTCHA_SECRETKEY={secretKey}
INVISIBLE_RECAPTCHA_BADGEHIDE=false
INVISIBLE_RECAPTCHA_DEBUG=false

隱藏頁面底部 logo:INVISIBLE_RECAPTCHA_BADGEHIDE=true
在瀏覽器控制檯上檢視這些 captcha 元素的繫結狀態:INVISIBLE_RECAPTCHA_DEBUG=true

使用

頁面顯示 reCaptcha:

{!! app('captcha')->render(); !!} 

自定義語言外掛

{!! app('captcha')->render($lang = null); !!}

驗證

在 rule 驗證陣列中新增 'g-recaptcha-response' => 'required|captcha':

$validate = Validator::make(Input::all(), [
    'g-recaptcha-response' => 'required|captcha'
]);

詳細文件和程式碼檢視:連結

參考:https://laravel-news.com/invisible-recaptcha-integration-with-laravel

step by step

相關文章