2015-11-04 965 views
0

我正在將NoCaptcha整合到網站,並且希望自己捕獲失敗的驗證碼。不幸的是,如果沒有正確解決,「圖片選擇」驗證碼將立即重新加載。noCaptcha:防止自動重新加載以捕獲失敗的嘗試

因此,如果像「挑選所有顯示咖啡的圖像」這樣的挑戰,並且用戶沒有正確選擇所有相應的圖像,挑戰會立即重新加載。但我希望無論如何都要發佈數據(和表單),並自行檢查Captcha的正確性。

下面是它應該如何工作的一個簡約例子。我相信,如果Captcha不會立即重新加載,它就會奏效。

<?php 
    require_once('recaptchalib.php'); 
    $publickey = "-----"; 
    $privatekey = "-----"; 
    try{ 
     if(isset($_POST['g-recaptcha-response'])){ 
      $captcha=$_POST['g-recaptcha-response']; 
      if(!$captcha){ exit; } 
      $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$privatekey."&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']); 
      if($response.success==false){ 
       // Do something 
      } else { 
       // Do something else 
      } 
     } 
     else 
     { 
      ?> 
      <html lang="en"> 
      <head> 
       <meta charset="utf-8" /> 
       <script src='https://www.google.com/recaptcha/api.js'></script> 
      </head> 
      <body> 
       <form method="post" action="thisfile.php"> 
        <div class="g-recaptcha" data-sitekey="<?php echo $publickey; ?>"></div> 
        <input type="submit" value="Absenden" /> 
       </form> 
      </body> 
      </html> 
      <?php 
     } 

    } catch (Exception $e) { 
     error_log($e->getMessage()); 
    } 
?> 

您是否知道防止自動重新加載的方法?

謝謝!

回答

0

您應該在reCaptcha後知道operations。 Google reCaptcha API(https://www.google.com/recaptcha/api.js)爲reCaptcha操作完成所有工作;允許沒有網站所有者交互(網站驗證除外)與其reCaptcha。

因此,您嘗試prevent reCaptcha auto-reloading或類似的操作是否會破壞其操作或導致其對最終用戶的不當行爲。

+0

謝謝你的回答!我知道API旨在處理所有事情。但有時不希望別人爲你做所有的工作;) – coroner

+0

@coroner,如果你非常想幹預谷歌事務,請閱讀[我的答案](http://stackoverflow.com/a/32627606/1230477)到其他問題。 –

+0

偉大的事情!非常感謝你!我會看看這個:) – coroner