概述

行为验证 PHP SDK提供基于PHP框架的demo。

开发环境

条目
兼容性 php5.2+,php7
依赖 curl

资源导航

条目
产品结构流程 通讯流程
SDK项目地址 gt3-php-sdk

安装 PHP SDK

下载SDK

使用命令从Github导入完整项目

git clone https://github.com/GeeTeam/gt3-php-sdk.git

手动下载压缩包文件

Github: gt3-php-sdk下载.zip文件

引入SDK

在您的项目中使用以下代码导入sdk

require_once dirname(dirname(__FILE__)) . '/lib/class.geetestlib.php';

配置密钥,修改请求参数

配置密钥

极验管理后台获取您的公钥(id)和私钥(key), 并在代码中配置。配置文件路径如下:

/config/config.php

修改请求参数(可选)

名称 说明
user_id user_id作为终端用户的唯一标识,确定用户的唯一性;作用于提供进阶数据分析服务,可在api1 或 api2 接口传入,不传入也不影响验证服务的使用;若担心用户信息风险,可作预处理(如哈希处理)再提供到极验 ;
client_type 客户端类型,web(pc浏览器),h5(手机浏览器,包括webview),native(原生app),unknown(未知)
ip_address 客户端请求您服务器的ip地址,unknow表示未知

接口示例

初始化(API1),获取流水标识并设置状态码

require_once dirname(dirname(__FILE__)) . '/lib/class.geetestlib.php';
require_once dirname(dirname(__FILE__)) . '/config/config.php';
$GtSdk = new GeetestLib(CAPTCHA_ID, PRIVATE_KEY);
session_start();
$data = array(
"user_id" => "test", # 网站用户id
"client_type" => "web", #web:电脑上的浏览器;h5:手机上的浏览器,包括移动应用内完全内置的web_view;native:通过原生SDK植入APP应用的方式
"ip_address" => "127.0.0.1" # 请在此处传输用户请求验证时所携带的IP
);
$status = $GtSdk->pre_process($data, 1);
$_SESSION['gtserver'] = $status;
$_SESSION['user_id'] = $data['user_id'];
echo $GtSdk->get_response_str();

注意:gtServerStatus和success字段是表示api1接口的状态,1表示正常,0表示异常,这两个字段的含义是对应的。
gtServerStatus字段是api1接口存入到session中,api2接口会从session取出这个值并进行后续判断,1就走正常二次验证逻辑,0就走宕机模式逻辑。
success字段是api1接口返回给前端的值,控制前端的表现形式,1就展现正常页面,0就展示宕机页面。

二次验证(API2),包括正常流程和宕机情况

require_once dirname(dirname(__FILE__)) . '/lib/class.geetestlib.php';
require_once dirname(dirname(__FILE__)) . '/config/config.php';
session_start();
$GtSdk = new GeetestLib(CAPTCHA_ID, PRIVATE_KEY);
$data = array(
"user_id" => $_SESSION['user_id'], # 网站用户id
"client_type" => "web", #web:电脑上的浏览器;h5:手机上的浏览器,包括移动应用内完全内置的web_view;native:通过原生SDK植入APP应用的方式
"ip_address" => "127.0.0.1" # 请在此处传输用户请求验证时所携带的IP
);
if ($_SESSION['gtserver'] == 1) { //服务器正常
$result = $GtSdk->success_validate($_POST['geetest_challenge'], $_POST['geetest_validate'], $_POST['geetest_seccode'], $data);
if ($result) {
echo '{"status":"success"}';
} else {
echo '{"status":"fail"}';
}
} else { //服务器宕机,走failback模式
if ($GtSdk->fail_validate($_POST['geetest_challenge'],$_POST['geetest_validate'],$_POST['geetest_seccode'])) {
echo '{"status":"success"}';
} else {
echo '{"status":"fail"}';
}
}

注意:当取出status=0时表示极验宕机,此时流程进入failback模式,后续逻辑都是在您的服务器完成,不会再向极验服务器发送网络请求。本SDK demo中,对于failback模式,只对请求参数做了简单的校验,您也可以自行设计,模拟宕机模式:将验证ID替换为随意一段字符,例如123456789。此时,验证码将进入宕机模式。

运行demo

将整个demo上传到开发环境的工作根目录,并运行启动项目。

在浏览器中访问http://127.0.0.1/gt3-php-sdk/static/login.html即可看到demo界面。

二次验证不通过处理方式

二次验证不通过的主要原因及排查方法请参考帮助文档的二次验证失败