PHP – вопрос об использовании reCAPTCHA с jQuery

Ниже приведен учебник, в котором показано, как скомпилировать проверку формы 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 и останавливается после проверки. Спасибо

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

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