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

yizhihongxing

以下是详细的“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日

相关文章

  • JS设置随机出现2个数字的实例代码

    下面是详细讲解“JS设置随机出现2个数字的实例代码”的完整攻略。 1. 需求分析 在编写代码前,我们需要先明确需求,即需要实现随机出现2个数字。 2. 代码实现 // 生成随机数 function generateRandomNumber(maxNum) { return Math.floor(Math.random() * maxNum); } // 生成…

    JavaScript 2023年5月28日
    00
  • 基于js实现逐步显示文字输出代码实例

    下面详细讲解一下基于js实现逐步显示文字输出的完整攻略。 1. 确定需求 在实现逐步显示文字的功能之前,首先需要确定需求。通常情况下,逐步显示文字的实现一般用于网站教程或者精美页面展示的文本展现,以吸引用户的注意,并且可以让用户有序地看到文本的信息,避免一次性将所有信息展现给用户,造成信息过载。 因此,在实现逐步显示文字的功能之前要先确认以下需求: 显示的文…

    JavaScript 2023年5月28日
    00
  • JavaScript中常见的继承方式总结

    JavaScript中常见的继承方式主要包括原型链继承、构造函数继承、组合继承、寄生组合继承、ES6类继承等,下面将详细介绍这些继承方式。 原型链继承 原型链继承是JavaScript中最为普遍的继承方式,它的基本思想是让一个构造函数的原型对象作为另一个构造函数的实例的原型,从而实现继承。其实现方式如下: function Parent() { this.n…

    JavaScript 2023年5月27日
    00
  • js fetch异步请求使用实例详解

    下面是关于“js fetch异步请求使用实例详解”的完整攻略。 什么是fetch? Fetch 是一个基于 Promise 的 HTTP 请求 API,它是一种用于网络资源获取的新标准。 相对 XMLHttpRequest(XHR),它提供了更加简洁易用的接口,同时还支持更多的功能,如请求取消、跨域请求等。 fetch 最基本的使用方式 fetch 最简单的…

    JavaScript 2023年5月28日
    00
  • Javascript中的几种URL编码方法比较

    当需要在Javascript代码中处理URL时,会涉及到URL编码的问题。Javascript中有多种URL编码方法可供选择,本攻略将详细讲解这些方法的使用方式以及比较优劣。 1. encodeURIComponent和encodeURI 使用encodeURIComponent和encodeURI两个方法可以将URL编码为可传输的格式。 1.1 测试示例 …

    JavaScript 2023年5月20日
    00
  • JavaScript 之JS的组成与基本语法

    下面是详细的“JavaScript 之JS的组成与基本语法”攻略: JS的组成与基本语法 JS的组成 在研究JS的基本语法之前,必须了解JavaScript的组成。JavaScript由以下3部分组成: ECMAScript:JavaScript的基础语法部分,包含了核心语言功能和对象。 DOM:Document Object Model,文档对象模型,操作…

    JavaScript 2023年5月17日
    00
  • JS端基于download.js实现图片、视频时直接下载而不是打开预览

    要实现前端直接下载文件而不是打开预览,可以借助 download.js 库来实现。download.js 是一个轻量级的 JavaScript 库,可以让你在浏览器中下载文件。它允许你使用 JavaScript 下载文件,无需打开预览窗口或重定向到下载链接。 以下是实现该功能的详细攻略: 步骤 1:引入下载库和样式文件 首先,你需要在你的 HTML 文件中引…

    JavaScript 2023年5月27日
    00
  • Jquery响应回车键直接提交表单操作代码

    以下是关于Jquery响应回车键直接提交表单操作代码的完整攻略。 1. 实现方法 Jquery可以监听键盘事件,并且可以获取当前输入框的值,从而判断是否需要执行相应操作。 常用的键盘事件有keydown和keyup,分别代表按下和抬起键的时候触发。 代码实现如下: $(document).ready(function(){ //监听按键事件 $(‘input…

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