PHP - Вопрос об использовании reCAPTCHA с jQuery - PullRequest
1 голос
/ 08 августа 2010

Вот учебник, который показывает, как объединить проверку формы jQuery с reCAPTCHA.http://snipplr.com/view/15563/jquery-validating-recaptcha-with-ajax/

Исходя из моего понимания, вышеприведенное руководство фактически выполняет проверку на стороне клиента через aJax, который связывается со сценарием reCAPTCHA сервера.

После успешной проверки я использую следующееКод заимствован из комментариев:

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

для отправки формы и просмотрите строку 21 исходного кода:

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

Мой вопрос заключается в том, ДОЛЖЕН ли я вызывать recaptcha_check_answer внутри form_handler.php с переданными параметрами

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 и останавливается после проверки.спасибо

1 Ответ

2 голосов
/ 08 августа 2010

Да, это звучит правильно для меня.Да, вам обязательно нужно проверить капчу на сервере.Мне вообще не нравится идея проверки капчи на стороне клиента, и я не думаю, что вы хотите публиковать свои ключи API reCaptchi в сценарии, который пользователь может получить.Также я ожидаю, что вторая проверка тех же значений капчи (ваша проверка на стороне сервера после проверки на стороне клиента) будет отклонена серверами recaptcha в любом случае (подтверждение этого из комментария в исходном блоге) .

Поэтому я думаю, что вам нужно опубликовать капчу в вашем обработчике действий AJAX, и она должна выполнить проверку, а также ваши действия.Вы можете проверить, что пользователь ввел что-то для капчи, прежде чем отправлять ее, но, IMO, вам вообще не следует проверять ее на стороне клиента.

...