cryental / wowe-recaptcha
PHP 对 Google reCAPTCHA API 的实现。
Requires
- php: >=5.4.0
- guzzle/guzzle: ~3.0
This package is auto-updated.
Last update: 2024-09-07 21:48:33 UTC
README
Recaptcha for PHP 提供了 Google reCAPTCHA API 的完整 PHP 实现,以及一些对其他流行包的辅助适配器。它特别使用了 2014 年 12 月发布的 "no CAPTCHA" 版本。
安装
通过 Composer:
composer require wowe/recaptcha:1.*
配置
使用此包需要两个值
secret
API 密钥对的认证部分。siteKey
API 密钥对中唯一标识您的站点的部分。
这两个值必须从 Google 获取。获取方法请参阅 此处。
使用
设置
为了使用此包,创建一个 Recaptcha
类的新实例,传入 secret
和 siteKey
值。
require 'vendor/autoload.php'; use \Wowe\Recaptcha\Recaptcha; $recaptcha = new Recaptcha('secret', 'siteKey');
可用方法
script($onload = null, $render = null, $hl = null, $attributes = array())
基于选项生成一个 script 标签。- $onload
string
: 加载时调用的 JavaScript 函数名称。 - $render
string
: 绘制小部件的时间('explicit' 或 'onload')。 - $hl
string
: 小部件使用的语言。 - $attributes
array
: 标签的附加属性。 - 返回
string
- $onload
widget($theme = null, $type = null, $callback = null, $attributes = array())
基于选项生成一个 div 标签作为小部件。- $theme
string
: 小部件的颜色主题('dark' 或 'light')。 - $type
string
: 要提供的服务 CAPTCHA 类型('audio' 或 'image')。 - $callback
string
: 用户提交成功的 CAPTCHA 响应时要执行的 JavaScript 回调函数名称。 - $attributes
array
: 附加到 div 上的属性。 - 返回
string
- $theme
verify($response, $remoteIp = null)
查询 Google API 以确定 CAPTCHA 是否有效。- $response
string
: 用户响应令牌。 - $remoteIp
string
: 用户的 IP 地址。 - 返回
boolean
- $response
errors()
上一次验证查询的错误列表。- 返回
array
- 返回
验证错误代码
调用 verify
后,您可以调用 errors
来获取可能遇到的任何错误列表。如果没有返回空数组,则表示没有错误!如果有错误,它们通常将是 Google API 返回的 错误代码。除了那些之外,它还可能返回
transfer-error
: 在尝试连接到 API 时遇到异常。api-error
: API 返回的不是 200 的 HTTP 状态码。response-error
: 无法读取 API 返回的响应格式。
适配器
Twig
网站 | GitHub
可以通过将包含的TwigExtension
类的实例添加到Twig环境中,在Twig模板中公开script
和widget
方法。必须使用Recaptcha
类的实例初始化TwigExtension
实例。script
映射到名为recaptchaScript
的函数,而widget
映射到名为recaptchaWidget
的函数。所有参数与上面的定义相同。
// index.php require 'vendor/autoload.php'; use \Wowe\Recaptcha\Recaptcha; use \Wowe\Recaptcha\Adapters\TwigExtension; $recaptcha = new Recaptcha('secret', 'siteKey'); $loader = new Twig_Loader_Filesystem(__DIR__ . '/views'); $twig = new Twig_Environment($loader); $twig->addExtension(new TwigExtension($recaptcha))); echo $twig->render('index.html'); // views/index.html <!doctype html> <html> <head> {{ recaptchaScript() }} </head> <body> <form method="POST"> {{ recaptchaWidget() }} <input type="submit" /> </form> </body> </html>
Slim 框架
网站 | GitHub
可以通过运行SlimManager::register
方法将Recaptcha
类自动注册为Slim容器中的单例,该方法有三个可选参数:
register($registerViewExtension = false, $recaptcha = null, $appName = null)
将Recaptcha实例注册到应用容器中。- $registerViewExtension
布尔型
:是否还要注册视图扩展(如果可用)。 - $recaptcha
\Wowe\Recaptcha\Recaptcha
:要绑定的Recaptcha实例。 - $appName
字符串
:要注册的应用名称。 - 返回空值
- $registerViewExtension
如果您想自己实例化Recaptcha
类(为了自定义配置值),可以这样做,然后将它传递给register
方法。如果没有传递Recaptcha
实例,则将尝试通过从Slim
应用获取配置值来创建一个。为了利用这一点,将配置值recaptcha
设置为一个包含secret
和siteKey
值的数组,如下例所示
require 'vendor/autoload.php'; use \Slim\Slim; use \Wowe\Recaptcha\Adapters\SlimManager; $app = new Slim([ 'recaptcha' => [ 'secret' => 'secret', 'siteKey' => 'siteKey' ] ]); SlimManager::register(); $app->get('/', function () use ($app) { return $app->render('index.html'); }); $app->post('/', function () use ($app) { $recaptchaResponse = $app->request->post('g-recaptcha-response'); var_dump($app->recaptcha->verify($recaptchaResponse), $app->recaptcha->errors()); }); $app->run();
如果registerViewExtension
的值为true
,并且正在使用具有可用扩展的视图引擎(例如Twig),则将注册相应的扩展到视图引擎。
发布说明
更多信息可以在CHANGELOG.md文件中找到
- v1.0.0 - 初次发布
版本兼容性
许可证
Recaptcha for PHP软件包是开源软件,受MIT许可证许可