Математическая сумма для проверки JavaScript на форме - PullRequest
1 голос
/ 06 февраля 2012

Попытка создать саму часть проверки для предотвращения спамеров.Я хочу поле с надписью "Что такое 2 + 7?"поэтому Javascript должен знать результат и пройти проверку.Я изо всех сил пытаюсь написать это, было бы что-то вроде:

var valid = '';
var required =  ' is required';
var sum = $('form #sum').val();

if (sum == '9') {
    valid += '<p>An answer is' + required + '</p>';
}

Ответы [ 4 ]

2 голосов
/ 06 февраля 2012

Трудно сказать точно, что нужно, не глядя на больше кода.

Простой вопрос, подобный этому, может очень хорошо работать, если он генерируется на стороне сервера, и он намного лучше для доступности, чем капчи. Чтобы быть эффективными, вопрос и ответ также должны выбираться случайным образом.

Вы можете включить предварительную проверку на стороне клиента для удобства использования, но поскольку спам-боты игнорируют JavaScript, бесполезно их предотвращать, если вы не делаете что-то действительно сложное.

Дополнительный совет по теме: Ваш селектор JQuery неэффективен. При использовании селектора идентификаторов вам никогда не потребуется включать его родительский элемент.

2 голосов
/ 06 февраля 2012

Проверка на стороне клиента с помощью Javascript не поможет защитить от спамеров. У большинства спамеров будут боты, которые даже не анализируют Javascript.

Единственный способ сделать это надежно, это обработать его на стороне сервера.

Я бы порекомендовал попробовать что-то вроде Recaptcha: http://www.google.com/recaptcha

0 голосов
/ 06 февраля 2012

Как я уже писал в комментариях, вы можете запретить ботам публиковать ваши данные, используя только javascript.Позвольте мне объяснить, как вы могли бы сделать это:

  1. Вы можете изначально установить неправильное или пустое действие для вашей формы, а затем, с помощью javascript, установить его на правильное, еслиОтвет на «сумму» был правильным.Или даже без запроса 'sum', так как большинство спам-ботов не запускают js.

  2. Вы можете вставить скрытое поле с именем «пройдено» с false его начальным значением.Опять же, основываясь на взаимодействии с формой, вы можете установить для него значение true, а затем проверить данные из формы (значение этого скрытого поля) на сервере.

  3. Последний метод, которыйВ большинстве случаев я предпочитаю кодировать HTML-код вашей формы, например, с помощью base64 и использовать ваш javascript для преобразования его обратно в HTML-код.Как только боты не запускают js, они даже не узнают, что у вас есть форма на странице.Хорошая часть здесь заключается в том, что вам не нужно просить человека вводить что-то еще в форму.

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

0 голосов
/ 06 февраля 2012

Хорошо, так что это не ответит на ваш вопрос как таковой, но я хочу предложить, чтобы вы этого не делали.Создание этих механизмов предотвращения спама на самом деле очень сложно, и ваша идея не будет работать, если спамер действительно захочет прийти на ваш сайт.Я бы посоветовал вам заглянуть в сервис под названием recaptcha .Он бесплатный, простой в настройке, а введенная пользователями информация используется для оцифровки старых книг.

...