bitninja/ninja-recaptcha

用于帮助使用谷歌的ReCaptcha服务的库。

1.1.5 2020-03-24 19:48 UTC

This package is auto-updated.

Last update: 2024-09-25 06:57:13 UTC


README

一个库,使谷歌的reCAPTCHA更容易集成。

功能

  • 它添加了一层抽象,使您可以轻松地将谷歌的reCAPTCHA替换为不同验证码提供商的解决方案,只需实现适当的接口即可。
  • 为视图和验证响应的逻辑提供分离的类。
  • 它提供了一个简单解决方案,包含预制的表单,可以在您网站的任何位置使用。
  • 它还提供了一个更高级的解决方案,您可以在类似操作DOM树的方式中构建和自定义您的表单。这些表单也易于重用。

将ninja reCAPTCHA集成到您的项目中

您需要将以下条目添加到您的composer.json文件中

{
"require": {
        "bitninja/ninja-recaptcha": "1.1.*"
},
"repositories": [
        {
                "type": "vcs",
                "url": "git@bitbucket.org:bitninjaio/ninjarecaptcha.git"
        }
]

}

使用预制的表单

为了使用谷歌的reCAPTCHA服务,您需要声明一个密钥和一个站点密钥。在以下示例中,我将使用一个测试站点密钥,它接受所有尝试,因此在生产环境中使用它是不安全的。

为了实例化渲染和验证CAPTCHA所需的类,您应该使用BitNinja\NinjaReCaptcha\GReCaptchaFactory类。

const SITE_KEY = "6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI";
const SECRET_KEY = "6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe";

$recaptchaFactory = new BitNinja\NinjaReCaptcha\GReCaptchaFactory(SECRET_KEY, SITE_KEY, $logger);

在这里,$logger必须是PSR3的Logger接口的一个实现(请参阅此处此处)。如果您不需要任何日志记录,您可以使用Devedge的NoLog类。

使用此工厂,您可以创建渲染CAPTCHA表单和验证响应的适当类。

查看CAPTCHA

您可以使用以下代码渲染CAPTCHA表单。VERIFICATION_FORM_URI的值将是表单的action属性,响应将被发送到该URI。

const VERIFICATION_FORM_URI = "simple_verify.php";
$challengeView = $recaptchaFactory->createChallengeView();
echo $challengeView->render(VERIFICATION_FORM_URI);

验证响应

您可以使用以下代码进行验证。

$challengeVerifier = $recaptchaFactory->createChallengeVerifier();
$result = $challengeVerifier->verify($_POST, $_SERVER['REMOTE_ADDR']);
var_dump($result);
if ($result===true)
{
                echo "Mkay.";
} else {
                echo "You shall not pass.";
}