2016-07-23 23 views
0

reCAPTCHAの形態は次のようである:reCAPTCHAのためjQueryのReCaptchaの検証方法は?

<script type="text/javascript"> var RecaptchaOptions = {"theme":"red","lang":"en"}; </script><script type="text/javascript" src="https://www.google.com/recaptcha/api/challenge?k=6LeThAsTAAAAAKYRjSpA8XZ1s4izK65hYr9ulCiD"> </script><noscript> <iframe src="https://www.google.com/recaptcha/api/noscript?k=6LeThAsTAAAAAKYRjSpA8XZ1s4izK65hYr9ulCiD" height="300" width="500" frameborder="0"> </iframe><br> <textarea name="recaptcha_challenge_field" rows="3" cols="40"> </textarea> <input type="hidden" name="recaptcha_response_field" value="manual_challenge"> </noscript>

及びZF2のバリのようである:

$recaptcha = new ZendService\ReCaptcha\ReCaptcha(PUB_KEY, PRIV_KEY); 
$html = $recaptcha->getHTML(); 
$result = $recaptcha->verify($_POST['recaptcha_challenge_field'], $_POST['recaptcha_response_field']); 
if (!$result->isValid()) { 
    // invalid 
} else { 
// valid 
} 

は、このようなリモートで検証することが可能である:https://jqueryvalidation.org/remote-method

私は以下のリモートPHPファイルで試してみると動作しません:

$recaptcha = new ZendService\ReCaptcha\ReCaptcha(PUB_KEY, PRIV_KEY); 
$result = $recaptcha->verify($_GET['recaptcha_challenge_field'], $_GET['recaptcha_response_field']); 
if (!$result->isValid()) { 
echo json_encode(false); 
} else { 
echo json_encode(true); 
} 

とJS自体は次のとおりです。

$().ready(function() { 
$("#contact").validate({ 
         rules: { 
           recaptcha_response_field: { 
              required: true, 
              remote: "json.php" 
           }    
        } 
}); 
}); 

は、それがすべてで可能であるか、私が何か間違ったことをしましたか?

+0

を検証するために、この機能を試してみてください。'推奨されません(関数()準備ができました。代わりに '' $(ドキュメント).ready(関数()を使用しますまた、 'json.php'は正しい場所にあり、呼び出されていますか?コンソールでAjax呼び出しを調べていますか?また、' remote'の 'data'オプションを使用しない限り、あなたは'recaptcha_response_field'の値をあなたのPHPスクリプトに送るだけです – Sparky

+0

同じフォームの他のフィールドは同じjson.phpでリモートで検証されるので、呼び出されたと見なします。 – user4271704

+0

データオプションの使い方とrecaptcha_challlenge_fieldの送信方法え? @Sparky – user4271704

答えて

0

はjQueryのあたりのドキュメント、 `$()のようreCAPTCHAの

var grecaptchaId; 
     var onloadCallback = function() { 
      grecaptchaId = grecaptcha.render('grecaptcha', { 
       'sitekey': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 
       'callback': function (response) { 
        $("#grecaptcha_error").text(''); 
       } 
      }); 
     }; 

     function ValidateRecaptcha() { 
      var x; 
      x = grecaptcha.getResponse(grecaptchaId); 
      if (x != "") { 
       $("#grecaptcha_error").text(''); 
       return true; 
      } 
      else { 
       $("#grecaptcha_error").text('The captcha is required and can\'t be empty'); 
       return false; 
      } 
     } 
関連する問題