lptech-asia / lp-recaptcha
简单的Google reCaptcha库,与Google reCaptcha库用法相同,但代码更简洁,更优化。
Requires
- php: >=5.0.0
This package is auto-updated.
Last update: 2024-09-29 06:15:01 UTC
README
reCAPTCHA是一种免费的CAPTCHA服务,可保护网站免受垃圾邮件和滥用。这是一个PHP库,用于封装处理reCAPTCHA服务响应所需的服务器端验证步骤。此客户端支持v2和v3。
- reCAPTCHA: https://www.google.com/recaptcha
- 此仓库: https://github.com/lptech-asia/lp-recaptcha
- 版本:1.0.0
- 许可:BSD,请参阅LICENSE
安装
Composer(推荐)
使用Composer从Packagist安装此库:lptech-asia/lp-recaptcha
从您的项目目录运行以下命令以添加依赖项
composer require lptech-asia/lp-recaptcha "master"
或者,直接将依赖项添加到您的composer.json
文件中
"require": { "lptech-asia/lp-recaptcha": "master" }
直接下载
下载ZIP文件并将其解压缩到您的项目中。在src/autoload.php
中提供了一个自动加载脚本,您可以在脚本中引入它。例如
require_once '/path/to/recaptcha.php'; $recaptcha = new LPRecaptcha('secret-key');
项目中的类按照PSR-4标准组织,因此您也可以使用自己的自动加载器或在代码中直接引入所需的文件。
用法
首先,在https://www.google.com/recaptcha/admin或v3在https://g.co/recaptcha/v3处获取您要集成的reCAPTCHA类型的相应密钥。
然后,遵循开发者网站上的集成指南,将reCAPTCHA功能添加到您的前端。
当您需要验证用户的响应时,此库就会派上用场。在PHP方面,您需要从reCAPTCHA服务获取响应和您的凭证中的密钥。使用您的密钥实例化LPRecaptcha
类,指定任何额外的验证规则,然后使用reCAPTCHA响应(通常在$_POST['g-recaptcha-response']
或JS中的grecaptcha.execute()
响应,在示例中为$gRecaptchaResponse
)和用户的IP地址调用verify()
。例如
<?php $require '../recaptcha.php'; $recaptcha = new LPRecaptcha('secret-key'); $recaptcha->setSitekey('site-key'); if ($resp->isSuccess()) { // Verified! } else { $errors = $resp->getErrorCodes(); }
以下方法可用
setExpectedHostname($hostname)
:确保主机名匹配。如果您已禁用了凭证的“域名/包名验证”,则必须这样做。setExpectedApkPackageName($apkPackageName)
:如果您正在验证来自Android应用的响应。同样,如果您已禁用了凭证的“域名/包名验证”,则必须这样做。setExpectedAction($action)
:确保对于v3 API,操作匹配。setScoreThreshold($threshold)
:为v3 API的响应设置分数阈值setChallengeTimeout($timeoutSeconds)
:设置用户通过reCAPTCHA和您的服务器处理它之间的超时时间。
每个set
*()
方法都返回LPRecaptcha
实例,因此您可以将其链接在一起。例如
<?php $recaptcha = new LPRecaptcha('secret-key'); $resp = $recaptcha->setExpectedHostname('recaptcha-demo.appspot.com') ->setExpectedAction('homepage') ->setScoreThreshold(0.5) ->verify($gRecaptchaResponse); if ($resp->isSuccess()) { // Verified! } else { $errors = $resp->getErrorCodes(); }