Pour Laravel 4, utilisez la branche v1.
composer require anhskohbo/no-captcha
REMARQUE Ce package prend en charge la fonction de découverte automatique de Laravel 5.5 et supérieur. Ignorez donc ces instructions Setup
si vous utilisez Laravel 5.5 et supérieur.
Dans app/config/app.php
ajoutez ce qui suit :
1- Le ServiceProvider au tableau des fournisseurs :
AnhskohboNoCaptchaNoCaptchaServiceProvider::class,
2- L'alias de classe au tableau alias :
'NoCaptcha' => AnhskohboNoCaptchaFacadesNoCaptcha::class,
3- Publier le fichier de configuration
php artisan vendor:publish --provider="AnhskohboNoCaptchaNoCaptchaServiceProvider"
Ajoutez NOCAPTCHA_SECRET
et NOCAPTCHA_SITEKEY
dans le fichier .env :
NOCAPTCHA_SECRET=secret-key NOCAPTCHA_SITEKEY=site-key
(Vous pouvez les obtenir ici)
Avec les options par défaut :
{!! NoCaptcha::renderJs() !!}
Avec prise en charge linguistique ou option onloadCallback :
{!! NoCaptcha::renderJs('fr', true, 'recaptchaCallback') !!}
Widget par défaut :
{!! NoCaptcha::display() !!}
Avec des attributs personnalisés (thème, taille, rappel...) :
{!! NoCaptcha::display(['data-theme' => 'dark']) !!}
reCAPTCHA invisible à l'aide d'un bouton d'envoi :
{!! NoCaptcha::displaySubmit('my-form-id', 'submit now !', ['data-theme' => 'dark']) !!}
Notez que l'identifiant du formulaire est requis dans cette méthode pour permettre au rappel généré automatiquement de soumettre le formulaire en cas de vérification captcha réussie.
Ajoutez 'g-recaptcha-response' => 'required|captcha'
au tableau de règles :
$validate = Validator::make(Input::all(), [ 'g-recaptcha-response' => 'required|captcha']);
Ajoutez les valeurs suivantes au tableau custom
dans le fichier de langage validation
:
'custom' => ['g-recaptcha-response' => ['required' => 'Veuillez vérifier que vous n'êtes pas un robot.','captcha' => 'Erreur Captcha ! réessayez plus tard ou contactez l'administrateur du site.', ], ],
Vérifiez ensuite les erreurs captcha dans le Form
:
@if ($erreurs->has('g-recaptcha-response')) <span class="help-block"> <strong>{{ $errors->first('g-recaptcha-response') }}</strong> </span> @endif
Lorsque vous utilisez la fonctionnalité Laravel Testing, vous devrez simuler la réponse pour l'élément de formulaire captcha.
Ainsi, pour tout test de formulaire impliquant le captcha, vous pouvez le faire en vous moquant du comportement de la façade :
// évite l'erreur de validation sur captchaNoCaptcha::shouldReceive('verifyResponse') ->une fois() ->andReturn(true);// fournit une entrée masquée pour votre validation « requise »NoCaptcha::shouldReceive('display') ->zéroOuPlusTemps() ->andReturn('<input type="hidden" name="g-recaptcha-response" value="1" />');
Vous pouvez ensuite tester le reste de votre formulaire normalement.
Lorsque vous utilisez des tests HTTP, vous pouvez ajouter la g-recaptcha-response
au corps de la requête pour la validation « requise » :
// évite l'erreur de validation sur captchaNoCaptcha::shouldReceive('verifyResponse') ->une fois() ->andReturn(true);// Requête POST, avec le corps de la requête incluant g-recaptcha-response$response = $this->json('POST', '/register', ['g-recaptcha-response' => ' 1','name' => 'John','email' => '[email protected]','password' => '123456','password_confirmation' => '123456', ]);
Exemple de paiement ci-dessous :
<?phprequire_once "vendor/autoload.php";$secret = 'CAPTCHA-SECRET';$sitekey = 'CAPTCHA-SITEKEY';$captcha = new AnhskohboNoCaptchaNoCaptcha($secret, $sitekey);if (! vide($_POST) ) {var_dump($captcha->verifyResponse($_POST['g-recaptcha-response']));exit(); }?><formulaire d'action="?" method="POST"><?php echo $captcha->display(); ?><button type="submit">Envoyer</button> </form><?php echo $captcha->renderJs(); ?>
https://github.com/anhskohbo/no-captcha/pulls