bitninja / ninja-recaptcha
用于帮助使用谷歌的ReCaptcha服务的库。
1.1.5
2020-03-24 19:48 UTC
Requires
- php: ~5.4|~7.0
- google/recaptcha: ~1.2
- psr/log: *
Requires (Dev)
- apigen/apigen: @stable
- devedge/stubs: @stable
- phploc/phploc: @stable
- phpmd/phpmd: @stable
- phpunit/phpunit: ~4.8 || ~5.0
- squizlabs/php_codesniffer: ~2.3
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.";
}