0

我有一个关于 hCaptcha 的问题。我正在尝试将它设置在一个带有两个按钮的表单上,它们可以触发两个不同的动作。

问题是,当我解决第二个按钮时它可以工作,但是当我解决第一个按钮时它没有,向我发送缺少输入响应错误。

所以我知道 hCaptcha 正在寻找表单中的键/值对,并且第二个按钮覆盖了第一个按钮,因此当我解决第一个按钮时,令牌不会被存储,因此不会被处理到后端。

这是一个代码示例:

<?php
$captcha = 0;
if(isset($_POST['h-captcha-response']))
{
$data = array(
            'secret' => "my_secret",
            'response' => $_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->success)
$captcha = 1;
}
else
$captcha = 1;
if($captcha == 1)
{
?>
<html>
  <head>
 
      </head>
  <body>
    <form action="#" method=POST id="form_">
      <textarea name=input_ rows="1" cols="40" id="input"></textarea><br/>
      <input type=submit name=perform1 value=perform1 id="submit1" class="h-captcha" data-sitekey="mykey" data-callback="onSubmit"/>
     <input type=submit name=perform2 value=perform2 id="submit2" class="h-captcha" data-sitekey="mykey" data-callback="onSubmit"/>
      <br/>
      </form>
       <script type="text/javascript">
        function onSubmit(token) {
          document.getElementById('form_').submit();
        }
      </script>
  </body>
</html>
<?php
}
?>

我尝试了各种方法,例如将令牌存储在隐藏输入中,但没有成功。它无法处理两个提交按钮似乎很奇怪。我知道 reCaptcha 也有同样的问题,但我在网上找到了一些解决方案。在这里我找不到任何东西。

如果您对解决方案有任何想法。

谢谢 :)

4

0 回答 0