Para Laravel 4 use la rama v1.
composer require anhskohbo/no-captcha
NOTA Este paquete admite la función de descubrimiento automático de Laravel 5.5 y superior, así que omita estas instrucciones Setup
si está utilizando Laravel 5.5 y superior.
En app/config/app.php
agregue lo siguiente:
1- El proveedor de servicios de la matriz de proveedores:
AnhskohboNoCaptchaNoCaptchaServiceProvider::clase,
2- El alias de clase para la matriz de alias:
'NoCaptcha' => AnhskohboNoCaptchaFacadesNoCaptcha::clase,
3- Publicar el archivo de configuración
php artisan vendor:publish --provider="AnhskohboNoCaptchaNoCaptchaServiceProvider"
Agregue NOCAPTCHA_SECRET
y NOCAPTCHA_SITEKEY
en el archivo .env :
NOCAPTCHA_SECRET=secret-key NOCAPTCHA_SITEKEY=site-key
(Puedes obtenerlos desde aquí)
Con opciones predeterminadas:
{!! NoCaptcha::renderJs() !!}
Con soporte de idiomas o opción onloadCallback:
{!! NoCaptcha::renderJs('fr', true, 'recaptchaCallback') !!}
Widget predeterminado:
{!! NoCaptcha::mostrar() !!}
Con atributos personalizados (tema, tamaño, devolución de llamada...):
{!! NoCaptcha::display(['data-theme' => 'oscuro']) !!}
ReCAPTCHA invisible usando un botón de enviar:
{!! NoCaptcha::displaySubmit('my-form-id', '¡enviar ahora!', ['data-theme' => 'dark']) !!}
Tenga en cuenta que la identificación del formulario es necesaria en este método para permitir que la devolución de llamada generada automáticamente envíe el formulario tras una verificación de captcha exitosa.
Agregue 'g-recaptcha-response' => 'required|captcha'
a la matriz de reglas:
$validar = Validador::make(Input::all(), [ 'g-recaptcha-response' => 'requerido|captcha']);
Agregue los siguientes valores a la matriz custom
en el archivo de idioma validation
:
'custom' => ['g-recaptcha-response' => ['required' => 'Por favor, verifica que no eres un robot.','captcha' => '¡Error de captcha! Vuelva a intentarlo más tarde o comuníquese con el administrador del sitio.', ], ],
Luego verifique si hay errores de captcha en el Form
:
@if ($errores->has('g-recaptcha-respuesta')) <span class="bloque-ayuda"> <strong>{{ $errores->first('g-recaptcha-response') }}</strong> </span> @endif
Cuando utilice la funcionalidad de prueba de Laravel, deberá simular la respuesta del elemento de formulario captcha.
Entonces, para cualquier prueba de formulario que involucre el captcha, puedes hacerlo burlándote del comportamiento de la fachada:
// evita el error de validación en captchaNoCaptcha::shouldReceive('verifyResponse') ->una vez() ->andReturn(true);// proporciona entrada oculta para su validación 'requerida'NoCaptcha::shouldReceive('display') ->ceroOMásVeces() ->andReturn('<input type="hidden" name="g-recaptcha-response" value="1" />');
Luego puede probar el resto de su formulario normalmente.
Cuando utilice pruebas HTTP, puede agregar la g-recaptcha-response
al cuerpo de la solicitud para la validación "requerida":
// evita el error de validación en captchaNoCaptcha::shouldReceive('verifyResponse') ->una vez() ->andReturn(true);// Solicitud POST, con el cuerpo de la solicitud que incluye g-recaptcha-response$response = $this->json('POST', '/register', ['g-recaptcha-response' => ' 1','nombre' => 'Juan','correo electrónico' => '[email protected]','contraseña' => '123456','contraseña_confirmación' => '123456', ]);
Ejemplo de pago a continuación:
<?phprequire_once "vendor/autoload.php";$secret = 'CAPTCHA-SECRET';$sitekey = 'CAPTCHA-SITEKEY';$captcha = new AnhskohboNoCaptchaNoCaptcha($secret, $sitekey);if (! vacío($_POST) ) {var_dump($captcha->verifyResponse($_POST['g-recaptcha-response']));salir(); }?><formulario acción="?" método="POST"><?php echo $captcha->display(); ?><tipo de botón="enviar">Enviar</botón> </form><?php echo $captcha->renderJs(); ?>
https://github.com/anhskohbo/no-captcha/pulls