首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 接入 Geetest 極驗驗證碼完整指南:前端初始化、後端二次驗證、SDK 封裝

     編輯:PHP 綜合知識

前言

Geetest 極驗是國內主流行為式驗證碼,支援滑動拼圖、點選文字、無感驗證。本文詳細講解 PHP 接入全流程:前端初始化、後端註冊/驗證、SDK 封裝、常見問題。

準備工作

  1. 官網註冊:geetest.com,創建項目獲取 captcha_id、private_key。
  2. 下載 PHP SDK:github.com/GeeTeam/gt-php-sdk,解壓到項目 vendor/geetest/。

前端頁面接入






後端註冊接口(register.php)

pre_process($userId);
$_SESSION['gtserver'] = $status; // 1: 正常模式, 0: 故障模式
$_SESSION['user_id'] = $userId;

// 返回前端所需配置
echo $gt->get_response_str(); // JSON: {gt, challenge, success}

後端驗證接口(verify.php)

success_validate($challenge, $validate, $seccode, $userId);
} else {
    // 故障模式:離線驗證
    $passed = $gt->fail_validate($challenge, $validate, $seccode);
}

if (!$passed) {
    exit(json_encode(['code' => 400, 'msg' => '驗證碼驗證失敗']));
}

// 極驗通過,進行業務驗證(如登錄)
$username = $_POST['username'] ?? '';
$password = $_POST['password'] ?? '';
// ... 你的登錄邏輯 ...
if ($loginSuccess) {
    exit(json_encode(['code' => 0, 'msg' => '登錄成功']));
} else {
    exit(json_encode(['code' => 401, 'msg' => '用戶名或密碼錯誤']));
}

SDK 核心方法速查

方法參數返回說明
pre_process($user_id)stringint (0/1)向極驗註冊,返回服務狀態
get_response_str()-string(JSON)前端初始化所需參數
success_validate($challenge, $validate, $seccode, $user_id)string,string,string,stringbool正常模式二次驗證
fail_validate($challenge, $validate, $seccode)string,string,stringbool故障模式離線驗證

常見問題與解決

問題原因解決
驗證碼不顯示/報錯gt.js 加載失敗/域名未授權極驗後台添加授權域名、檢查 CSP 策略、HTTPS 下引用 HTTPS gt.js
二次驗證總失敗user_id 不一致/Session 丟失確保 register/verify 使用同一 user_id,Session 未過期、域名一致
彈出式不彈出bindOn 綁定錯誤/按鈕被遮擋確保 bindOn 選擇器正確、按鈕可見、z-index 足夠
離線模式頻繁觸發極驗服務器不可達/防火牆攔截服務器放行出站 443 到 api.geetest.com、檢查 DNS 解析
移動端體驗差product 類型不適配移動端建議用 "embed" 嵌入式或 "float" 懸浮式

現代框架集成建議(Laravel/ThinkPHP/Yii)

  1. 將 SDK 放入 vendor/ 或 extend/,配置自動加載。
  2. 封裝 Service 類:GeetestService::register($userId)、GeetestService::validate($data)。
  3. 配置文件存儲 captcha_id、private_key,環境區分(測試/正式)。
  4. 控制器中注入 Service,保持控制器輕量。

結語

Geetest 接入核心三步:前端 gt.js 初始化 → 後端 pre_process 註冊 → 業務提交時 success_validate 二次驗證。關鍵細節:user_id 一致性、Session 管理、正常/故障模式分支。封裝 Service 類統一項目調用,配合極驗後台策略配置(難度、頻率限制),構建安全友好的驗證體驗。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved