Мы все периодически периодически используем reCAPTCHA от google, она удобная и простая. Но, по умолчанию, он рассчитана на отправку вместе со всем данными формы. Подробнее можно прочить в статье использование reCAPTCHA
Но что делать, если у нас идет отправка данных через Ajax форму?
Итак, не буду долго ходить вокруг и около, нам потребуется метод grecaptcha.getResponse()
Пример использования:
$.ajax({
type: "POST",
url: "/?task=email.send",
data:
{
id_form: 1,
jform_name: $("#form_name").val(),
jform_email: $("#form_email").val(),
jform_text: $("#form_name").val(),
recaptcha: grecaptcha.getResponse()
},
}).done(function( data ) {
...
});
Также стоит, перед отправкой формы, проверять, что пользователь поставил галочку:
if(grecaptcha.getResponse().length == 0) {
// галочка НЕ поставлена
} else {
// можно отправлять форму
}