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 密钥发布在用户可以掌握的脚本中。此外,我希望对相同验证码值的第二次验证(客户端检查之后的服务器端检查)无论如何都会被 recaptcha 的服务器拒绝(从原始博客的评论中确认)

So I think you need to post the captcha to your AJAX action handler and it should do the validation as well as your action. You could validate the user has entered something for the captcha before you submit it but IMO you shouldn't try and validate it client side at all.

于 2010-08-08T17:15:22.933 回答