используя несколько Google reCAPTCHA v3 на одной странице с формой PHP - PullRequest
0 голосов
/ 05 февраля 2019

Как я могу использовать две формы с Google reCAPTCHA v3 и PHP на одной странице?
мой код:

HTML-формы

<form action="" method="post">
    <input type="text" name="email">
    <input type="hidden" name="recaptchaResponse" id="recaptchaResponse">
    <button type="submit">Submit</button>
</form> 

<form action="" method="post">
    <input type="text" name="phone">
    <input type="hidden" name="recaptchaResponse2" id="recaptchaResponse2">
    <button type="submit">Submit</button>
</form> 

Коды Javascript

grecaptcha.ready(function () {
  grecaptcha.execute('XXXXXXXXXXXX', { action: 'homepage' }).then(function (token) {
    var recaptchaResponse = document.getElementById('recaptchaResponse');  
    if(recaptchaResponse){recaptchaResponse.value = token;} 
    var recaptchaResponse2 = document.getElementById('recaptchaResponse2'); 
    if(recaptchaResponse2){recaptchaResponse2.value = token;} 
  });
});

Коды PHP

$recaptchaResponse = $_POST['recaptchaResponse']; 
$recaptcha = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=XXXXXX&response='.$recaptchaResponse); 
$recaptcha = json_decode($recaptcha);
if ( $recaptcha->success && $recaptcha->score >= 0.5 && $recaptcha->action == 'homepage' )
{
    // valid
}else{
    // invalid
}

$recaptchaResponse2 = $_POST['recaptchaResponse2']; 
$recaptcha2 = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=XXXXXX&response='.$recaptchaResponse2); 
$recaptcha2 = json_decode($recaptcha2);
if ( $recaptcha2->success && $recaptcha2->score >= 0.5 && $recaptcha2->action == 'homepage' )
{
    // valid
}else{
    // invalid
}

Если я использую обе формы на одной странице, этопоказывает мне ошибку, но если я использую только одну форму, все работает хорошо.

...