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> @endif
Ao 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