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