1

これは、jQuery フォーム検証と reCAPTCHA を組み合わせる方法を示すチュートリアルです。 http://snipplr.com/view/15563/jquery-validating-recaptcha-with-ajax/

私の理解に基づいて、上記のチュートリアルは実際には、サーバーの reCAPTCHA スクリプトと通信する aJax を介してクライアント側の検証を行います。

検証が成功したら、コメントから借用した次のコードを使用します。

$('#formID').validate({ 
submitHandler: function(form) { 
 if(validateCaptcha()){ // Submit form 
offerForm.ajaxSubmit(); } } });

フォームを送信するには、元のコードの 21 行目を参照してください。

$("form").attr("action", "http://action/to/the/form_handler.php");

私の質問は、渡されたパラメーターを使用して form_handler.php 内で recaptcha_check_answer を呼び出さなければならないかどうかです。

challengeField = $("input#recaptcha_challenge_field").val();
responseField = $("input#recaptcha_response_field").val();

そうでない場合は、検証手順を変更することで簡単に reCAPTCHA を回避できます。クライアントとサーバーの両方の検証に対して常に必要な同じ考えのようです。

誤解している場合は、私の考えを修正してください。

// 私が抱えている問題の詳細情報を提供します ///

    <code>
    <form id="regFormBody" method="post" action="verify.php">
    ...
    </code>

      $("#regFormBody").validate({
          debug: true,
          errorPlacement: function (error, element) {
            error.insertAfter(element.parents('div.collection:first'));
          },

          rules: {
            loginemail: { required: true, email: true, rangelength: [4, 32] },
            password: { required: true, rangelength: [8, 30], passwordPattern: true },
            confirmpassword: { required: true, rangelength: [8, 30], equalTo: "#password" }
          }
          }
        });

私が抱えている問題は次のとおりです。フォームがクライアント側の検証に合格した場合、verify.php はまったくトリガーされず、検証後に停止します。ありがとうございました

4

1 に答える 1

2

はい、それは私には正しいように聞こえます。はい、サーバーでキャプチャを検証する必要があります。キャプチャクライアント側を検証するという考えはまったく好きではありません.reCaptchi APIキーを、ユーザーが手に入れることができるスクリプトに投稿したくないと思います. また、同じ captcha 値の 2 回目の検証 (クライアント側チェックの後のサーバー側チェック) が recaptcha のサーバーによって拒否されることを期待します(元のブログのコメントからの確認) .

したがって、キャプチャをAJAXアクションハンドラーに投稿する必要があり、アクションと同様に検証を行う必要があると思います。キャプチャを送信する前に、ユーザーがキャプチャに何かを入力したことを検証できますが、クライアント側で検証しようとすべきではありません。

于 2010-08-08T17:15:22.933 に答える