#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 та же проблема, но я нашел для нее несколько решений в Интернете. Здесь я ничего не могу найти.
Если у вас есть какие-либо идеи о решении.
Спасибо 🙂