Использование hCaptcha для формы с двумя кнопками

#forms #submit #hcaptcha

Вопрос:

У меня есть проблема, касающаяся hCaptcha. Я пытаюсь установить его в форме с двумя кнопками, запускающими два разных действия.

Проблема в том, что когда я решаю вторую кнопку, она работает, но когда я решаю первую, она не работает, отправляет мне ошибку «отсутствует ввод-ответ».

Итак, я понимаю, что hCaptcha ищет пары ключ/значение в форме, а вторая кнопка перезаписывает первую, так что, когда я решаю первую, токен не сохраняется и, следовательно, не обрабатывается на серверной части.

Вот пример кода :

 lt;?php $captcha = 0; if(isset($_POST['h-captcha-response'])) { $data = array(  'secret' =gt; "my_secret",  'response' =gt; $_POST['h-captcha-response']  ); $verify = curl_init(); curl_setopt($verify, CURLOPT_URL, "https://hcaptcha.com/siteverify"); curl_setopt($verify, CURLOPT_POST, true); curl_setopt($verify, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($verify, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($verify); var_dump($response); $responseData = json_decode($response); if($responseData-gt;success) $captcha = 1; } else $captcha = 1; if($captcha == 1) { ?gt; lt;htmlgt;  lt;headgt;    lt;/headgt;  lt;bodygt;  lt;form action="#" method=POST id="form_"gt;  lt;textarea name=input_ rows="1" cols="40" id="input"gt;lt;/textareagt;lt;br/gt;  lt;input type=submit name=perform1 value=perform1 id="submit1" class="h-captcha" data-sitekey="mykey" data-callback="onSubmit"/gt;  lt;input type=submit name=perform2 value=perform2 id="submit2" class="h-captcha" data-sitekey="mykey" data-callback="onSubmit"/gt;  lt;br/gt;  lt;/formgt;  lt;script type="text/javascript"gt;  function onSubmit(token) {  document.getElementById('form_').submit();  }  lt;/scriptgt;  lt;/bodygt; lt;/htmlgt; lt;?php } ?gt;  

Я пробовал разные вещи, например, хранить токен в скрытом вводе, но это не сработало. Кажется странным, что он не может обрабатывать две кнопки отправки. Я знаю, что у reCAPTCHA та же проблема, но я нашел для нее несколько решений в Интернете. Здесь я ничего не могу найти.

Если у вас есть какие-либо идеи о решении.

Спасибо 🙂