web-dev-qa-db-fra.com

Google ReCAPTCHA comment faire requis?

Est-ce que quelqu'un sait faire " Google ReCAPTCHA (v2) " être "requis" dans une form?

Je veux dire aucune soumission de formulaire tant que recaptcha n'est pas renseigné?

J'utilise ParsleyJs dans mon formulaire, mais je n'ai pas trouvé le moyen de le faire fonctionner avec divs ...

12
serhio

Vous devez utiliser l'appel de réponse de vérification reCaptcha. Quelque chose comme ceci: <script src='https://www.google.com/recaptcha/api.js?onload=reCaptchaCallback&render=explicit'></script>

var RC2KEY = 'sitekey',
    doSubmit = false;

function reCaptchaVerify(response) {
    if (response === document.querySelector('.g-recaptcha-response').value) {
        doSubmit = true;
    }
}

function reCaptchaExpired () {
    /* do something when it expires */
}

function reCaptchaCallback () {
    /* this must be in the global scope for google to get access */
    grecaptcha.render('id', {
        'sitekey': RC2KEY,
        'callback': reCaptchaVerify,
        'expired-callback': reCaptchaExpired
    });
}

document.forms['form-name'].addEventListener('submit',function(e){
    if (doSubmit) {
        /* submit form or do something else */
    }
})
15
colecmc

Pour ParsleyJS, vous allez faire une petite solution de contournement:

1.Ajouter un champ de saisie masqué, avec data-parsley-required="true", value = "", comme ceci:

<input id="myField" data-parsley-errors-container="#errorContainer" data-parsley-required="true" value="" type="text" style="display:none;">

2.Ajouter un conteneur d'erreur (juste en dessous ou en dessous de votre g-recaptcha div):

<span id='errorContainer'></span>

3.Ajouter cette fonction simple quelque part dans votre code js:

function recaptchaCallback() {
    document.getElementById('myField').value = 'nonEmpty';
}

4.Ajouter l'attribut data-callback avec la valeur de la fonction personnalisée:

<div class="g-recaptcha" data-sitekey="***" data-callback="recaptchaCallback"></div>
1
Shahar Shokrani

Créez une règle https://laravel.com/docs/5.7/validation#custom-validation-rules

Ensuite, utilisez-le dans votre contrôleur

// validation
$this->validate( $request, array(
    'g_recaptcha_response' => ['required', 'string', new Captcha()]
));
0
Jquestions