ThinkPHP5使用极验验证码

Posted 车车大人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThinkPHP5使用极验验证码相关的知识,希望对你有一定的参考价值。

第一步:将极验的SDK包放入TP框架的extend目录(使用SDK包请联系作者)

第二步:在框架的某一个控制器下,自定义方法完成获取验证码的操作

    //验证码
  public function getGtCode(){
      //引入第三方文件的方式
      Loader::import(\'jiyan.web.StartCaptchaServlet\');
      //实例化类文件
      $obj = new \\StartCaptchaServlet();
      //获取验证码数据内容
      $res = $obj->getData();
      //输出内容即可
      echo $res;
  }

第三步:在前端页面,将CSS样式放入头文件中

<style>
      #embed-captcha {
          width: 300px;
          padding-left: 0.8em;
      }
      .show {
          text-align: center;
          display: block;
      }
      .hide {
          display: none;
      }
      #notice {
          color: red;
      }
      .changepwd {
          margin-left: 150px;
      }
  </style>

第四步:引入jQuery和极验的JS文件,但是要记得,jQuery文件必须在极验文件的前边

<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.js"></script>
<script type="text/javascript" src="__STATIC__/gt/gt.js"></script>
(极验的文件可以去SDK中找到,放在public目录的static目录下就可以了)

第五步:在页面中嵌入html标签

<!--行为验证开始-->
<div id="embed-captcha"></div>
<p id="wait" class="show">正在加载验证码......</p>
<p id="notice" class="hide">请先完成验证</p>
<!--行为验证结束-->

第六步:JS内容如下,当然个别地方需要进行修改

var handlerEmbed = function (captchaObj) {
      //给按钮点击事件
      $(".sui-btn").click(function () {
          //获取账号密码(自行更改取值)
          var uname = $("#uname").val();
          var upwd = $("#upwd").val();
          //非空验证
          if (uname == "") {
              alert("用户名不能为空");
              return false;
          }

          if (upwd == "") {
              alert("密码不能为空");
              return false;
          }
          //智能验证
          var validate = captchaObj.getValidate();
          if (!validate) {
              $("#notice")[0].className = "show";
              setTimeout(function () {
                  $("#notice")[0].className = "hide";
              }, 2000);
              return false;
          }

          //请求登录接口(自行更改ajax内容)
          $.ajax({
              url:"{:url(\'Login/login\')}",
              type:"post",
              data:{uname:uname,upwd:upwd},
              dataType:\'json\',
              success:function(e){
                  if(e.code!=0){
                      alert(e.msg);
                      return false;
                  }

                  location.href="http://www.tpshop.com/index.php/home/index/index.html"
              }
          })

      });
      // 将验证码加到id为captcha的元素里,同时会有三个input的值:geetest_challenge, geetest_validate, geetest_seccode
      captchaObj.appendTo("#embed-captcha");//将极验组件与页面元素相关联
      captchaObj.onReady(function () {
          $("#wait")[0].className = "hide";//初始化操作处理p标签
      });
      // 更多接口参考:http://www.geetest.com/install/sections/idx-client-sdk.html
  };

  //页面刚刚加载的时候请求极验接口(只需要更改接口地址就可以了)
  $(document).ready(function(){
      $.ajax({
          // 获取id,challenge,success(是否启用failback)
          url: "{:url(\'Login/getGtCode\')}?t=" + (new Date()).getTime(), // 加随机数防止缓存
          type: "get",
          dataType: "json",
          success: function (data) {
              // 使用initGeetest接口
              // 参数1:配置参数
              // 参数2:回调,回调的第一个参数验证码对象,之后可以使用它做appendTo之类的事件
              initGeetest({
                  gt: data.gt,
                  challenge: data.challenge,
                  new_captcha: data.new_captcha,
                  product: "embed", // 产品形式,包括:float,embed,popup。注意只对PC版验证码有效
                  offline: !data.success // 表示用户后台检测极验服务器是否宕机,一般不需要关注
                  // 更多配置参数请参见:http://www.geetest.com/install/sections/);
              },handlerEmbed)
          }
      });
  });

 

 

 

 

 

以上是关于ThinkPHP5使用极验验证码的主要内容,如果未能解决你的问题,请参考以下文章

95行代码极验滑动验证码?是远远不够的!大牛石锤!

Python之极验滑动验证码的识别(教程+案例)

验证码逆向专栏极验三代四代点选类验证码逆向分析

七步完美解决问题python爬虫极验滑动验证码问题

8.2 极验滑动验证码的识别

网易易盾是山寨点触验证,还是极验验证?