htmlguyllc/phprecaptcha

使整合Google的ReCaptcha变得简单!

1.2.0 2018-09-11 22:18 UTC

This package is auto-updated.

Last update: 2024-09-19 17:22:36 UTC


README

ReCaptcha的一个包装类,使其集成到您的网站变得非常简单。

由HTMLGuy, LLC用爱创造

重要注意事项

  • 默认使用Guzzle(如果可用),否则回退到CURL(SSL_VERIFY_PEER/SSL_VERIFY_HOST = false)- 我建议您添加cacert并将verify方法传递为"true, true"(请参阅定义以获取详细信息)
  • 如果任何东西失败(除缺少IP地址外),它将默认允许请求。这样,即使ReCaptcha出现故障,您也不会错过任何东西。

使用方法

在Google上创建一个账户,然后导航到他们的ReCaptcha服务

https://www.google.com/recaptcha/admin

注册一个新的站点,然后保持标签页打开,以便可以看到您的站点密钥和秘密。

使用composer将PHPRecaptcha集成到您的网站中

composer require htmlguyllc/phprecaptcha
  • 或者复制google_credentials.example.ini并在同一文件夹中创建一个名为google_credentials.ini的文件
  1. 将{{YOUR_SECRET}}替换为Google上的秘密密钥。
  2. 将{{YOUR_SITE_KEY}}替换为Google上的站点密钥。
  • 或者使用以下密钥在环境变量中设置您的凭据
  1. RECAPTCHA_SECRET
  2. RECAPTCHA_SITE_KEY
  • 或者以您想要的方式存储您的凭据,并在实例化时传递它们
$captcha = new \HTMLGuyLLC\ReCaptcha($secret, $site_key);

在HTML中包含以下内容

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

在您想要显示验证码的地方使用以下内容(可能是在表单中)

$captcha = new \HTMLGuyLLC\ReCaptcha();
echo $captcha->display();

在表单提交后验证验证码,运行verify()方法。

try
{
    $captcha = new \HTMLGuyLLC\ReCaptcha();
    if( !$captcha->verify() )
    {
        //user failed to complete the captcha correctly
    }
}
catch(\HTMLGuyLLC\ReCaptchaExeption $e)
{
    //do something specific for errors with recaptcha or this class
}
catch(\Exception $e)
{
    //catch any unexpected exceptions
}

在JavaScript中,如果您使用AJAX提交表单,则需要重新生成验证码。在您的AJAX完成回调中使用以下内容

grecaptcha.reset();

实现思路

  • 您可以通过使用以下内容添加一个全局AJAX "complete"回调,默认更新页面上的任何验证码
$(document).ajaxComplete(function(event,request,settings){
  if( typeof grecaptcha !== 'undefined' )
  {
   grecaptcha.reset()
  }
});

依赖项

PHP, CURL, ReCaptcha, Guzzle(可选)

变更日志

1.0

初始

1.1

包含对环境变量的支持

1.2

允许在verify()方法中覆盖curl verify host/peer选项

许可

MIT许可

版权所有(c)2018 Shane Stebner

特此授予任何获得此软件及其相关文档文件(以下简称“软件”)副本的任何人免费使用该软件的权利,不受任何限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向提供软件的个人提供使用该软件的权利,前提是遵守以下条件

上述版权声明和本许可声明应包含在所有副本或软件的实质性部分中。

软件按“现状”提供,不提供任何形式的保证,无论是明示的还是隐含的,包括但不限于适销性、适用于特定目的和无侵犯性的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些责任是因合同、侵权或其他方式引起的,与软件或其使用或任何其他相关事项有关。