no captcha
v3.6.0
对于 Laravel 4,请使用 v1 分支。
composer require anhskohbo/no-captcha
注意此包支持 Laravel 5.5 及更高版本的自动发现功能,因此如果您使用 Laravel 5.5 及更高版本,请跳过这些Setup
说明。
在app/config/app.php
中添加以下内容:
1- 服务提供者到提供者数组:
AnhskohboNoCaptchaNoCaptchaServiceProvider::类,
2- 别名数组的类别名:
'NoCaptcha' => AnhskohboNoCaptchaFacadesNoCaptcha::class,
3-发布配置文件
php artisan vendor:publish --provider="AnhskohboNoCaptchaNoCaptchaServiceProvider"
在.env文件中添加NOCAPTCHA_SECRET
和NOCAPTCHA_SITEKEY
:
NOCAPTCHA_SECRET=secret-key NOCAPTCHA_SITEKEY=site-key
(您可以从这里获取它们)
使用默认选项:
{!! NoCaptcha::renderJs() !!}
具有语言支持或 onloadCallback 选项:
{!! NoCaptcha::renderJs('fr', true, 'recaptchaCallback') !!}
默认小部件:
{!! NoCaptcha::display() !!}
使用自定义属性(主题、大小、回调...):
{!! NoCaptcha::display(['data-theme' => 'dark']) !!}
使用提交按钮的不可见 reCAPTCHA:
{!! NoCaptcha::displaySubmit('my-form-id', '立即提交!', ['data-theme' => 'dark']) !!}
请注意,此方法中需要表单的 ID,以便自动生成的回调在成功验证码验证后提交表单。
将'g-recaptcha-response' => 'required|captcha'
添加到规则数组:
$validate = Validator::make(Input::all(), [ 'g-recaptcha-response' => 'required|captcha']);
将以下值添加到validation
语言文件中的custom
数组:
'custom' => ['g-recaptcha-response' => ['required' => '请验证您不是机器人。','captcha' => '验证码错误!稍后重试或联系网站管理员。', ], ],
然后检查Form
中的验证码错误:
@if ($errors->has('g-recaptcha-response')) <span class="help-block"> <strong>{{ $errors->first('g-recaptcha-response') }}</strong> </span> @endif
使用 Laravel 测试功能时,您需要模拟验证码表单元素的响应。
因此,对于任何涉及验证码的表单测试,您可以通过模拟外观行为来完成此操作:
// 防止 captchaNoCaptcha::shouldReceive('verifyResponse') 出现验证错误 ->一次() ->andReturn(true);// 为您的“必需”验证提供隐藏输入NoCaptcha::shouldReceive('display') ->zeroOrMoreTimes() ->andReturn('<input type="hidden" name="g-recaptcha-response" value="1" />');
然后您可以像平常一样测试表格的其余部分。
使用 HTTP 测试时,您可以将g-recaptcha-response
添加到请求正文以进行“必需”验证:
// 防止 captchaNoCaptcha::shouldReceive('verifyResponse') 出现验证错误 ->一次() ->andReturn(true);// POST 请求,请求正文包含 g-recaptcha-response$response = $this->json('POST', '/register', ['g-recaptcha-response' => ' 1','姓名' => '约翰','电子邮件' => '[email protected]','密码' => '123456','密码确认' => '123456', ]);
结帐示例如下:
<?phprequire_once "vendor/autoload.php";$secret = 'CAPTCHA-SECRET';$sitekey = 'CAPTCHA-SITEKEY';$captcha = new AnhskohboNoCaptchaNoCaptcha($secret, $sitekey);if (!empty($_POST) ) {var_dump($captcha->verifyResponse($_POST['g-recaptcha-response']));退出(); }?><表单操作=“?” method="POST"><?php echo $captcha->display(); ?><button type="submit">提交</button> </form><?php echo $captcha->renderJs(); ?>
https://github.com/anhskohbo/no-captcha/pulls