Para Laravel 4 use o branch v1.
composer require anhskohbo/no-captcha
NOTA Este pacote suporta o recurso de descoberta automática do Laravel 5.5 e superior. Portanto, pule estas instruções Setup se estiver usando o Laravel 5.5 e superior.
Em app/config/app.php adicione o seguinte:
1- O ServiceProvider para o array de provedores:
AnhskohboNoCaptchaNoCaptchaServiceProvider::class,
2- O alias da classe para o array de aliases:
'NoCaptcha' => AnhskohboNoCaptchaFacadesNoCaptcha::class,
3- Publique o arquivo de configuração
php artisan vendor:publish --provider="AnhskohboNoCaptchaNoCaptchaServiceProvider" Adicione NOCAPTCHA_SECRET e NOCAPTCHA_SITEKEY no arquivo .env :
NOCAPTCHA_SECRET=secret-key NOCAPTCHA_SITEKEY=site-key
(Você pode obtê-los aqui)
Com opções padrão:
{!! NoCaptcha::renderJs() !!}Com suporte a idiomas ou opção onloadCallback:
{!! NoCaptcha::renderJs('fr', true, 'recaptchaCallback') !!}Widget padrão:
{!! NoCaptcha::display() !!}Com atributos personalizados (tema, tamanho, retorno de chamada...):
{!! NoCaptcha::display(['data-theme' => 'dark']) !!}ReCAPTCHA invisível usando um botão de envio:
{!! NoCaptcha::displaySubmit('my-form-id', 'envie agora!', ['data-theme' => 'dark']) !!}Observe que o id do formulário é necessário neste método para permitir que o retorno de chamada gerado automaticamente envie o formulário em uma verificação de captcha bem-sucedida.
Adicione 'g-recaptcha-response' => 'required|captcha' ao array de regras:
$validate = Validador::make(Input::all(), [ 'g-recaptcha-response' => 'required|captcha']);
Adicione os seguintes valores à matriz custom no arquivo de linguagem de validation :
'custom' => ['g-recaptcha-response' => ['required' => 'Por favor, verifique se você não é um robô.','captcha' => 'Erro de captcha! tente novamente mais tarde ou entre em contato com o administrador do site.',
],
], Em seguida, verifique se há erros de captcha no Form :
@if ($erros->has('g-recaptcha-response'))
<span class="help-block">
<strong>{{ $errors->first('g-recaptcha-response') }}</strong>
</span>
@endifAo usar a funcionalidade Laravel Testing, você precisará simular a resposta para o elemento do formulário captcha.
Portanto, para qualquer teste de formulário envolvendo captcha, você pode fazer isso simulando o comportamento da fachada:
// evita erro de validação em captchaNoCaptcha::shouldReceive('verifyResponse')
->uma vez()
->andReturn(true);// fornece entrada oculta para sua validação 'obrigatória'NoCaptcha::shouldReceive('display')
->zeroOrMoreTimes()
->andReturn('<input type="hidden" name="g-recaptcha-response" valor="1" />');Você pode então testar o restante do seu formulário normalmente.
Ao usar testes HTTP, você pode adicionar a g-recaptcha-response ao corpo da solicitação para a validação 'obrigatória':
// evita erro de validação em captchaNoCaptcha::shouldReceive('verifyResponse')
->uma vez()
->andReturn(true);// Solicitação POST, com corpo da solicitação incluindo g-recaptcha-response$response = $this->json('POST', '/register', ['g-recaptcha-response' => ' 1','nome' => 'John','email' => '[email protected]','password' => '123456','password_confirmation' => '123456',
]);Exemplo de check-out abaixo:
<?phprequire_once "vendor/autoload.php";$secret = 'CAPTCHA-SECRET';$sitekey = 'CAPTCHA-SITEKEY';$captcha = new AnhskohboNoCaptchaNoCaptcha($secret, $sitekey);if (! vazio($_POST) ) {var_dump($captcha->verifyResponse($_POST['g-recaptcha-response']));exit();
}?><form action="?" método="POST"><?php echo $captcha->display(); ?><button type="submit">Enviar</button>
</form><?php echo $captcha->renderJs(); ?>https://github.com/anhskohbo/no-captcha/pulls