oriceon / invisible-recaptcha
Invisible reCAPTCHA For Laravel.
Requires
- php: ^8.2
- guzzlehttp/guzzle: ^7.0
- illuminate/support: ^10.0|^11.0
- illuminate/view: ^10.0|^11.0
Requires (Dev)
- phpunit/phpunit: ^9.3|^11.0
This package is auto-updated.
Last update: 2024-09-16 07:16:48 UTC
README
为什么选择 invisible reCAPTCHA?
Invisible reCAPTCHA 是 reCAPTCHA v2(无验证码)的改进版本。在 reCAPTCHA v2 中,用户需要点击“我不是机器人”按钮来证明他们是人类。在 invisible reCAPTCHA 中,不会嵌入验证码框供用户点击。它完全不可见!只在页面底部显示徽章来提示用户您的网站正在使用这项技术。(徽章可以隐藏,但不建议隐藏。)
安装
composer require oriceon/invisible-recaptcha
配置
在设置配置之前,请记住在申请密钥时选择 invisible reCAPTCHA
。
将 INVISIBLE_RECAPTCHA_SITEKEY
和 INVISIBLE_RECAPTCHA_SECRETKEY
添加到 .env 文件中。
// required
INVISIBLE_RECAPTCHA_SITEKEY={siteKey}
INVISIBLE_RECAPTCHA_SECRETKEY={secretKey}
// optional
INVISIBLE_RECAPTCHA_BADGEHIDE=false
INVISIBLE_RECAPTCHA_DATABADGE='bottomright'
INVISIBLE_RECAPTCHA_TIMEOUT=5
INVISIBLE_RECAPTCHA_DEBUG=false
INVISIBLE_RECAPTCHA_ENABLED=true
您可以选择三种不同的验证码样式进行设置:
bottomright
、bottomleft
、inline
如果您将
INVISIBLE_RECAPTCHA_BADGEHIDE
设置为 true,可以隐藏徽章logo。
您可以通过设置
INVISIBLE_RECAPTCHA_DEBUG
为 true 在浏览器控制台查看这些验证码元素的绑定状态。
用法
在渲染验证码之前,请注意以下事项
render()
或renderHTML()
函数需要在表单元素内调用。- 您必须确保提交按钮的
type
属性为submit
。 - 表单中只能有一个提交按钮。
在视图中显示 reCAPTCHA
{!! app('captcha')->render() !!} // or you can use this in blade @captcha
支持自定义语言
{!! app('captcha')->render('en') !!} // or you can use this in blade @captcha('en')
与 VueJS 等JavaScript框架一起使用
渲染过程包括三个不同的部分,可以在使用 VueJS 等框架时单独渲染,因为这些框架在模板中包含 <script>
标签时会抛出控制台错误。
您可以在 HTML 的头部位置渲染 polyfill(这样做):
{!! app('captcha')->renderPolyfill() !!} // Or with blade directive: @captchaPolyfill
您可以使用以下方式渲染 HTML,这需要在 <form>
标签内部进行:
{!! app('captcha')->renderCaptchaHTML() !!} // Or with blade directive: @captchaHTML
您可以使用以下方式渲染必要的 <script>
标签,包括可选的语言支持:
// The argument is optional. {!! app('captcha')->renderFooterJS('en') !!} // Or with blade directive: @captchaScripts // blade directive, with language support: @captchaScripts('en')
验证
将 'g-recaptcha-response' => 'required|captcha'
添加到规则数组。
$validate = Validator::make(Input::all(), [ 'g-recaptcha-response' => 'required|captcha' ]);
致谢
- anhskohbo(no-captcha 包的作者)
- albertcht(fworked no-captcha 包的作者)
- 贡献者