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日

相关文章

  • Vue透传Attributes使用解析

    Vue透传Attributes使用解析 在Vue组件开发中,透传Attributes是一个十分实用的功能。它可以将一个有用的属性从组件传递到内部元素中,而不用在每一个内层组件中重新定义该属性。这篇文章将介绍透传Attributes的使用方法,以及两个示例来说明该功能如何在Vue中发挥作用。 什么是透传Attributes 透传Attributes就是把父组件…

    JavaScript 2023年6月10日
    00
  • 什么是JavaScript注入攻击?

    JavaScript注入攻击是指攻击者通过篡改网页中的JavaScript代码,向网站注入恶意的JavaScript语句,从而实现对网站的攻击行为。此种攻击手段常被黑客用于窃取、篡改或者删除网站中的个人信息、交易记录等敏感信息。 攻击者通过JavaScript注入攻击,可以在用户访问受攻击网站时,进行一下常见的攻击行为: 劫持网站表单:攻击者通过JavaSc…

    JavaScript 2023年5月19日
    00
  • 基于javascript实现漂亮的页面过渡动画效果附源码下载

    下面详细讲解一下“基于javascript实现漂亮的页面过渡动画效果附源码下载”的完整攻略。 一、前言 随着互联网的发展,用户对于网站的要求也越来越高,而页面过渡动画效果可以很好的提高用户体验,增强网站的吸引力。在这篇攻略中,我们将会介绍如何基于Javascript实现漂亮的页面过渡动画效果。 二、概述 本攻略将会通过两个实例来说明如何利用Javascrip…

    JavaScript 2023年6月10日
    00
  • 网页javascript精华代码集

    网页JavaScript精华代码集完整攻略 什么是“网页JavaScript精华代码集”? “网页JavaScript精华代码集”是一个收录了许多常用的JavaScript代码片段的合集。它包含了很多实用、易用、高效的代码片段,可以用于网页开发中的各种场景。使用这些代码片段,可以减少开发人员的工作量,提高网页开发的效率。 如何使用“网页JavaScript精…

    JavaScript 2023年5月18日
    00
  • Javascript学习指南

    Javascript学习指南 如果你想在Web开发领域中站稳脚跟,那么学习JavaScript是非常重要的。下面是一个完整的学习攻略,可以帮助你快速入门并掌握JavaScript技能。 第一步:了解基本概念 在深入学习JavaScript之前,你需要先了解以下基本概念: 变量和数据类型 运算符 控制流语句 函数 对象和数组 深入了解这些基础知识可以帮助你更好…

    JavaScript 2023年5月17日
    00
  • 详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑

    当使用Bootstrap表单验证和Bootstrap-select插件时,可能会发现在重置表单时,表单中的Bootstrap-select插件的验证提示并没有被清除,这是一个很常见的问题,本文将详细讲解如何解决这个问题。 前置知识 Bootstrap表单验证 Bootstrap表单验证是Bootstrap框架的一个组件,它可以帮助我们快速地验证表单中的数据是…

    JavaScript 2023年6月10日
    00
  • JavaScript获取上传文件相关信息示例详解

    让我详细讲解一下“JavaScript获取上传文件相关信息示例详解”。 1. 背景介绍 在前端开发中,有时需要上传文件,比如上传图片、上传文档等。上传文件时,我们需要获取文件的相关信息,比如文件名称、文件大小、文件类型等信息。 在本文中,我们将通过两条 JavaScript 示例详细讲解如何获取上传文件的相关信息。 2. 示例1:使用FileReader对象…

    JavaScript 2023年5月27日
    00
  • JavaScript递归函数解“汉诺塔”算法代码解析

    下面为你提供“JavaScript递归函数解‘汉诺塔’算法代码解析”的完整攻略。 1. 理解“汉诺塔”问题 “汉诺塔”是一道经典的递归求解问题,其问题描述如下: 有三根柱子A、B、C,在柱子A上放置了n个大小不同、自下而上依次递增的圆盘。现要求按照以下规则将所有圆盘从柱子A移动到柱子C上: 每次只能移动一个圆盘; 圆盘可以放置在A、B、C中的任意一个柱子上,…

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