thinkphp整合系列之极验滑动验证码geetest功能

以下是详细的“thinkphp整合系列之极验滑动验证码geetest功能”的完整攻略:

1. 引入SDK

首先,需要将极验官网提供的验证码 SDK 文件夹拷贝到工程目录下。在 thinkphp 中,可以将 SDK 文件夹放到项目的 vendor 目录下。

在控制器中引入 SDK:

require_once './vendor/geetest-sdk/class.geetestlib.php';
require_once './vendor/geetest-sdk/class.geetestmanage.php';

2. 获取极验验证的状态

极验验证成功后会返回一个标识符,应用程序需要验证这个标识符的有效性。可以通过调用 validate($gt_challenge, $gt_validate, $gt_seccode) 函数来验证:

$geetest = new GeetestLib($captcha_id, $private_key);
if ($geetest->validate($_POST['geetest_challenge'], $_POST['geetest_validate'], $_POST['geetest_seccode'])) {
    // 验证码正确
} else {
    // 验证码错误
}

其中 $captcha_id 和 $private_key 分别是在极验官网申请的公钥和私钥。

3. 显示验证码

在前端页面中,通过调用极验 SDK 的 initGeetest 函数显示验证码:

$.ajax({
  url: 'index.php?m=user&a=geetest',
  type: 'get',
  dataType: 'json',
  success: function (data) {
    initGeetest({
      gt: data.gt,
      challenge: data.challenge,
      new_captcha: data.new_captcha,
      product: 'float',
      width: '100%',
      offline: !data.success
    }, handler);
  }
});

其中 index.php?m=user&a=geetest 是服务器上的一个处理验证码的接口。

示例一:在注册页面中使用验证码

在注册页面中,可以通过如下方式显示验证码:

<div id="captcha"></div>
<input type="text" name="geetest_challenge">
<input type="text" name="geetest_validate">
<input type="text" name="geetest_seccode">

然后通过如下代码在服务器端生成验证码:

public function geetest()
{
    $captcha_id = 'xxxx';
    $private_key = 'xxxx';

    $geetest = new GeetestLib($captcha_id, $private_key);
    $status = $geetest->pre_process();

    session_start();
    $_SESSION['geetest'] = array(
        'gt_server_status' => $status,
        'gt_challenge' => $geetest->get_challenge(),
        'gt_validate' => $geetest->get_validate(),
        'gt_seccode' => $geetest->get_seccode(),
    );
    echo json_encode($geetest->get_response());
}

其中 $captcha_id 和 $private_key 是在极验官网申请的公钥和私钥。

在提交表单时,可以通过 PHP 代码验证验证码的正确性:

$geetest = new GeetestLib($captcha_id, $private_key);
if ($geetest->validate($_POST['geetest_challenge'], $_POST['geetest_validate'], $_POST['geetest_seccode'])) {
    // 验证码正确,将数据保存到数据库
} else {
    // 验证码错误,返回错误提示
}

示例二:在登录页面中使用验证码

在登录页面中,可以使用如下方式显示验证码:

<label>验证码:</label>
<input type="text" name="geetest_challenge">
<input type="text" name="geetest_validate">
<input type="text" name="geetest_seccode">
<div id="captcha"></div>

然后通过如下代码在服务器端生成验证码:

public function geetest()
{
    $captcha_id = 'xxxx';
    $private_key = 'xxxx';

    $geetest = new GeetestLib($captcha_id, $private_key);
    $status = $geetest->pre_process();

    session_start();
    $_SESSION['geetest'] = array(
        'gt_server_status' => $status,
        'gt_challenge' => $geetest->get_challenge(),
        'gt_validate' => $geetest->get_validate(),
        'gt_seccode' => $geetest->get_seccode(),
    );
    echo json_encode($geetest->get_response());
}

然后在提交表单的时候,可以调用 validate 函数验证验证码的正确性:

$geetest = new GeetestLib($captcha_id, $private_key);
if ($geetest->validate($_POST['geetest_challenge'], $_POST['geetest_validate'], $_POST['geetest_seccode'])) {
    // 验证码正确,完成登录
} else {
    // 验证码错误,返回错误提示
}

至此,我们完成了在 thinkphp 中使用极验滑动验证码的操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:thinkphp整合系列之极验滑动验证码geetest功能 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • Router解决跨模块下的页面跳转示例

    下面我就给你详细讲解一下“Router解决跨模块下的页面跳转示例”的完整攻略。 什么是Router Router即路由器,它可以在前端页面中实现页面之间的跳转。在Vue中,可以通过vue-router来实现路由功能。它基于Vue.js,可以非常方便地集成到Vue.js应用中。Vue Router可以让我们通过多个URL来展示多个页面,也可以在不同页面间进行导…

    JavaScript 2023年6月11日
    00
  • JavaScript手写一个前端存储工具库

    标题:JavaScript手写一个前端存储工具库 简介 前端存储工具库是用于在客户端存储数据的工具,常见的有Cookie、localStorage、sessionStorage等。今天我们将学习如何手写一个前端存储工具库,以方便我们在实际开发中使用。 代码实现 我们将实现一个名为store的前端存储工具库,支持以下功能: 存储:可支持存储值类型、对象类型以及…

    JavaScript 2023年5月27日
    00
  • 解读邮箱正则表达式:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

    首先,这个正则表达式用于验证邮箱的格式是否正确。下面我会逐个解读每一个符号的含义。 ^ 表示匹配字符串的开头。 \w+ 表示匹配字母、数字、下划线至少一次,这部分表示邮箱用户名部分。 ([-+.]\w+)* 表示匹配特殊字符 -、+、. 后面跟一个或多个字母、数字、下划线,0次或多次。这部分表示邮箱用户名中的特殊字符部分,可以没有。 @ 表示匹配到 at 符…

    JavaScript 2023年6月10日
    00
  • create-react-app项目配置全解析

    create-react-app 项目配置全解析 create-react-app 是基于 React 的官方脚手架工具,使用 create-react-app 可以快速构建一个 React 应用,并且默认已经配置了一些开发所需的基础配置,可以省去我们自己手动配置的过程。 安装 使用 create-react-app 前需要先全局安装该工具,使用以下命令进行…

    JavaScript 2023年6月10日
    00
  • 深入浅析JavaScript中的RegExp对象

    深入浅析JavaScript中的RegExp对象 什么是RegExp对象? RegExp对象是JavaScript中处理正则表达式的核心对象。正则表达式(Regular Expression)是一种匹配文本的模式,常用于搜索、替换、验证等操作。 创建RegExp对象 创建RegExp对象可以使用字面量方式和构造函数方式。 字面量方式 const regExp…

    JavaScript 2023年5月27日
    00
  • 使用SWFObject完美解决HTML插入Flash的各浏览器兼容性方案

    使用SWFObject插入Flash可以通过JavaScript动态生成Flash对象,并通过检测当前浏览器是否支持HTML5的canvas元素,自动选择使用原生HTML5的canvas元素或者使用Flash来显示动画。这种方法可以解决HTML插入Flash的各浏览器兼容性问题,并且也可以提高网站的性能。 以下是使用SWFObject完美解决HTML插入Fl…

    JavaScript 2023年6月10日
    00
  • iView UI FORM 动态添加表单项校验规则写法实例

    iView UI是一个基于Vue.js的UI组件库,提供了众多的组件和功能,其中FORM组件是表单组件,可以方便的实现表单的校验和提交。 当需要动态添加表单项时,需要动态绑定表单项的校验规则。下面是iView UI FORM动态添加表单项校验规则的完整攻略: 步骤一:引入iView UI组件库 import Vue from ‘vue’ import iVi…

    JavaScript 2023年6月10日
    00
  • js正则表达式常用函数详解

    JS正则表达式常用函数详解 JavaScript中利用正则表达式进行字符串匹配的操作非常常见。本文将详细讲解JavaScript中常用的正则表达式函数。 RegExp对象 在JavaScript中,正则表达式使用RegExp对象来表示。RegExp对象有两种创建方式: 直接量法 RegExp对象可以使用直接量法来创建,直接量法用斜杠(/)来定义正则表达式的模…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部