MENU

在AJAX|PJAX请求内使用reCAPTCHA验证码

最近做了一个免费SSL签发,在接入验证码的时候选择了reCAPTCHA,然而google的接入文档没有中文,后来经过查找和尝试,找到了方法.

前言

其实一开始就想接入reCAPTCHA的,但是因为文档看不懂而尝试接入极验验证和点触验证,然而接入过程和结果令人恶心,极验验证缺少开发文档,我尝试使用composer来安装其sdk,却发现composer仓库里没有这个包,无奈手动继承,终于照着demo配置好了验证的部分,再去配置html页面,发现爆出了js错误,网上搜索没有发现任何有用的信息,于是换了点触验证,点触也一个样子,js报错,后来还是打算把目标放在reCAPTCHA上,最后在locer提示下在github找到了sdk和文档还有demo,然后google搜索了how to use recaptcha in ajax关键词找到了在ajax中的使用方法,接入很简单,很顺利.

接入部分

先到https://www.google.com/recaptcha/admin填写你的域名选择验证码版本(我使用的是v2版本),你也可以填写本地开发域名,比如xxx.lan,在本地可以正常使用

然后集成reCPTCHA的sdk,这里我使用的thinkphp5,它支持使用composer来安装包,于是我使用composer require google/recaptcha "~1.1"来安装这个包,当然你也可以直接下载包手动集成,地址是:https://github.com/google/recaptcha

然后是php代码

$recaptcha = new \ReCaptcha\ReCaptcha('这里填写google给你的secret');

$resp = $recaptcha->verify('这里是客户表单提交的验证码', '客户的ip');

if (!$resp->isSuccess()) {

    return $this->error('未通过验证!');

}

然后是前端html代码

<div class="g-recaptcha" data-sitekey="google给你的sitekey"></div>

<!-- google验证码 -->

<script src='https://www.google.com/recaptcha/api.js'></script>

<script>

        $.ajax({

            url:"/ssl/index/create.html",

            type:'post',

            // async:false,

            data:{

                'fname':$('#srk-fname').val(),

                'lname':$('#srk-lname').val(),

                'email':$('#srk-email').val(),

                'phone':$('#srk-phone').val(),

                'csr':$('#srk-csr').val(),

                // 'captcha':$('#srk-captcha').val()

                'g-recaptcha-response':grecaptcha.getResponse() //获取reCAPTCHA验证码数据

            },

            success:function(data){}

        }

</script>
添加新评论

已有 17 条评论
  1. colin
    这个免费证书怎么做到的。是利用漏洞吗?
  2. vethnet
    请问博主是什么时候重制ssl的证书个数的。看到的一直剩余零
    1. shirakun
      因为ssl站点访问较大,而且读取sql也较为频繁,我这小独服的硬盘可能撑不住,搬到了namecheap的虚拟主机,但是忽略了虚拟主机的时区问题,今天8点左右才重置,现在已经调整了cron的执行时间,能不能行第二天才会有结果
      1. vethnet
        你的时区是 UTC+8? 没有重置
        1. shirakun
          并不是UTC+8,已经发现今天的还没重置,等效手动重置
          1. Sway
            能邮件联系? 我需要帮助@(酷)
            1. vethnet
              谢谢你,今天正常了@(呵呵)
            2. shirakun
              邮箱自己找,发邮件时说明来源和问题即可
              1. vethnet
                给您发邮件,可能被至垃圾邮件了吧。@(呵呵) 升级为 0.4.6 之后凌晨后没有重置。还有我需要的证书可能较多,能合作?
              2. Sway
                2017-12-06 00:00 今天的证书没有刷新@(呵呵)
  3. Jaion
    https://www.recaptcha.net/recaptcha/api.js 把js换成这个就能正常使用验证码,谷歌在国内解析到了北京服务器,可惜官方api还是默认用google.com
    1. shirakun
      使用reCAPTCHA的理由之一是把不需要的人挡在外面,真正需要的人知道怎么做