wowe / recaptcha
PHP 对 Google reCAPTCHA API 的实现。
Requires
- php: >=5.4.0
- guzzle/guzzle: ~3.0
Requires (Dev)
- phpunit/phpunit: ~4.2.5
- slim/slim: ~2.0
- slim/views: 0.1.*
- twig/twig: ~1.0
This package is auto-updated.
Last update: 2024-09-06 09:12:25 UTC
README
PHP Recaptcha 提供了 Google reCAPTCHA API 的完整 PHP 实现,以及一些用于其他流行包的有用适配器。它特别使用了 2014 年 12 月发布的 "无 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
:何时渲染小部件('明确' 或 'onload')。 - $hl
string
:小部件使用的语言。 - $attributes
array
:标签的附加属性。 - 返回
string
- $onload
widget($theme = null, $type = null, $callback = null, $attributes = array())
基于选项生成一个 div 标签用于小部件。- $theme
string
:小部件的颜色主题('深色' 或 '浅色')。 - $type
string
:提供的服务 CAPTCHA 类型('音频' 或 '图像')。 - $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 返回的 HTTP 状态码不是 200。response-error
:无法读取 API 返回的响应格式。
适配器
Twig
网站 | GitHub
通过在 Twig 模板中添加所包含的 TwigExtension
类的一个实例到 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 许可