martian / laracaptcha
一个Laravel扩展包,允许您无缝地在表单或RESTful API中使用hCaptcha或reCaptcha
Requires
- php: ^7.4|^8.0
- guzzlehttp/guzzle: ^7.0
- illuminate/support: ^10.0
Requires (Dev)
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.0
README
一个Laravel扩展包,允许您无缝地将Google reCAPTCHA v3、v2或hCAPTCHA集成到您的应用程序表单或Restful API中。


支持的Captcha服务
安装
注意:此包需要PHP 7.4或更高版本。
您可以通过composer安装此包
composer require martian/laracaptcha
注册服务提供者
将以下内容添加到config/app.php
文件中的providers
数组中
Martian\LaraCaptcha\Providers\LaraCaptchaServiceProvider::class,
发布配置文件
使用以下命令发布配置文件
php artisan vendor:publish --provider="Martian\LaraCaptcha\Providers\LaraCaptchaServiceProvider"
配置
配置文件位于config/laracaptcha.php
。以下选项可用
reCAPTCHA v2配置
-
为了使用reCAPTCHA,您需要在注册您的网站以获取API密钥对。要使用reCAPTCHA v2复选框,请选择“挑战(v2)”>“我不是机器人复选框”。要使用不可见的reCAPTCHA,请选择“挑战(v2)”>“不可见reCAPTCHA徽章”。API密钥对由站点密钥和密钥组成。在
config/laracaptcha.php
中将default
选项设置为recaptcha
'default' => 'recaptcha',
-
将
version
选项更改为v2
以使用reCAPTCHA v2'drivers' => [ 'recaptcha' => [ ... 'version' => 'v2', ... ], ],
-
将
RECAPTCHA_SITE_KEY
和RECAPTCHA_SECRET_KEY
添加到您的.env
文件中RECAPTCHA_SITE_KEY=your-site-key RECAPTCHA_SECRET_KEY=your-secret-key
reCAPTCHA v3配置
-
为了使用reCAPTCHA,您需要在注册您的网站以获取API密钥对。要使用reCAPTCHA v3,请选择“reCAPTCHA v3”。API密钥对由站点密钥和密钥组成。在
config/laracaptcha.php
中将default
选项设置为recaptcha
'default' => 'recaptcha',
-
将
version
选项更改为v3
以使用reCAPTCHA v3'drivers' => [ 'recaptcha' => [ ... 'version' => 'v3', ... ], ],
-
将
RECAPTCHA_SITE_KEY
、RECAPTCHA_SECRET_KEY
和RECAPTCHA_SITE_URL
添加到您的.env
文件中RECAPTCHA_SITE_KEY=your-site-key RECAPTCHA_SECRET_KEY=your-secret-key RECAPTCHA_SITE_URL=${APP_URL}
hCAPTCHA配置
-
为了使用hCAPTCHA,您需要在注册您的网站以获取API密钥对。API密钥对由站点密钥和密钥组成。在
config/laracaptcha.php
中将default
选项设置为hcaptcha
'default' => 'hcaptcha',
-
将
HCAPTCHA_SITE_KEY
和HCAPTCHA_SECRET_KEY
添加到您的.env
文件中HCAPTCHA_SITE_KEY=10000000-ffff-ffff-ffff-000000000001 HCAPTCHA_SECRET_KEY=0x0000000000000000000000000000000000000000
以下是默认使用的测试密钥。您不应该在生产环境中使用它们!
使用方法
要显示表单中的验证码,请根据您使用的验证码配置,按照以下步骤操作。
reCAPTCHA v2复选框和不可见
初始化JavaScript
将以下内容添加到您页面的 <head>
部分中
{!! LaraCaptcha::script() !!}
有关其他选项,请参阅 Google reCaptcha v2 Checkbox 文档
{!! LaraCaptcha::script('yourCallbackFunction', 'explicit', 'en') !!}
注意:第一个参数是回调函数名称,第二个是渲染模式(显式或onload),第三个是来自 文档 的语言代码
显示 Captcha 小部件 - 复选框
将以下内容添加到您的表单中
{!! LaraCaptcha::display() !!}
有关其他选项,请参阅 Google reCaptcha v2 Checkbox 文档
{!! LaraCaptcha::display(['data-theme' => 'dark']) !!}
注意:该参数是 widget 的属性数组
显示 Captcha 小部件 - 隐藏
将以下内容添加到您的表单中
{!! LaraCaptcha::displayInvisibleButton('formIdentifier', 'Submit Button',['data-size' => 'invisible']) !!}
注意:第一个参数是表单标识符,第二个是按钮标签(提交按钮),第三个是 widget 的属性数组,请参阅 文档。将 formIdentifier 值作为 id 添加到表单元素中
验证 Captcha
将以下内容添加到您的验证规则中
'g-recaptcha-response' => 'recaptcha',
您还可以在 Validator 门面中使用该规则
$validator = Validator::make($request->all(), [ 'g-recaptcha-response' => 'recaptcha', ]);
添加自定义验证消息
将以下内容添加到您的验证消息中
'g-recaptcha-response.recaptcha' => 'Captcha verification failed.',
或者您可以在 config/laracaptcha.php
中更改默认消息
'error_message' => 'Captcha verification failed.',
reCAPTCHA v3
初始化JavaScript
将以下内容添加到您页面的 <head>
部分中
{!! LaraCaptcha::script() !!}
有关其他选项,请参阅 Google reCaptcha v3 文档
{!! LaraCaptcha::script('yourCallbackFunction', 'explicit', 'en') !!}
显示 Captcha 小部件
将以下内容添加到您的表单中
{!! LaraCaptcha::display() !!}
有关其他选项,请参阅 Google reCaptcha v3 文档
{!! LaraCaptcha::display(['action' => 'homepage', 'custom_validation' => 'yourCustomFunction', 'recaptcha_input_identifier' => 'yourReCaptchaInputId']) !!}
注意:该参数是 widget 的属性数组,请参阅 文档 了解操作类型
hCAPTCHA v2 复选框 & 隐藏
初始化JavaScript
将以下内容添加到您页面的 <head>
部分中
{!! LaraCaptcha::script() !!}
有关其他选项,请参阅 hCAPTCHA 文档
{!! LaraCaptcha::script('yourCallbackFunction', 'onload' 'en', 'on') !!}
注意:第一个参数是回调函数名称,第二个是渲染模式(onload 或显式),第三个是来自 文档 的语言代码,第四个是 recaptchacompat 选项
显示 Captcha 小部件 - 复选框
将以下内容添加到您的表单中
{!! LaraCaptcha::display() !!}
有关其他选项,请参阅 hCAPTCHA 文档
{!! LaraCaptcha::display(['data-theme' => 'dark']) !!}
注意:该参数是 widget 的属性数组
显示 Captcha 小部件 - 隐藏
将以下内容添加到您的表单中,请参阅 隐藏式 hCAPTCHA 文档
{!! LaraCaptcha::displayInvisibleButton('formIdentifier', 'Submit Button',['data-size' => 'invisible']) !!}
注意:第一个参数是表单标识符,第二个是按钮标签(提交按钮),第三个是 widget 的属性数组,请参阅 文档
验证 Captcha
将以下内容添加到您的验证规则中
'h-captcha-response' => 'hcaptcha',
您还可以在 Validator 门面中使用该规则
$validator = Validator::make($request->all(), [ 'h-captcha-response' => 'hcaptcha', ]);
添加自定义验证消息
将以下内容添加到您的验证消息中
'h-captcha-response.hcaptcha' => 'Captcha verification failed.',
或者您可以在 config/laracaptcha.php
中更改默认消息
'error_message' => 'Captcha verification failed.',
对于其他配置,请查看 config/laracaptcha.php
文件。
测试
./vendor/bin/phpunit
更新日志
有关最近更改的更多信息,请参阅 更新日志
贡献
有关详细信息,请参阅 贡献指南
安全
如果您发现任何安全相关的问题,请通过电子邮件 hendurhance.dev@gmail.com 而不是使用问题跟踪器
鸣谢
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件