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

Совет! Использовать данный способ совместно с капчей, эффективность защиты будет выше.

Cразу отмечу плюсы и минусы данного способа:

  • Хорошо работает против ботов.
  • Быстрая установка в форму отправки сообщений
  • Минимум кода (3 строчки)
  • Не требует особых знаний, за исключением расположения основных файлов.
  • Пользователи, у которых javascript отключён, не смогут пройти проверку и отправить сообщение.

Установка:

1) Добавить дополнительное скрытое поле в форму с именем name="check" и пустым значением value=""

<input id="check" name="check" type="hidden" value="">

2) В кнопке той же формы добавить следующий код:

<input type="submit" value="Оправить" onclick="document.getElementById('check').value = 'nospam';">

3) Далее в php скрипте, который выполняет проверку формы вносим следующий код:

if ($_POST['check'] != 'nospam') exit('Spam detected');

Принцип действия защиты от спама на Javascript:

Принцип очень прост. Рассчитан он на то, что спам-боты не умеют выполнять программы на JavaScript. В то время когда обычный пользователь нажмет на кнопку формы, в наше скрытое поле впишется слово "nospam", а в случае с роботом это поле останется пустым. Почему он останется пустым? Робот заполняет все поля кроме нашего скрытого поля с идентификатором id="check" и переменная "check" останется незаполненной, следовательно, почта не будет отправлена. А при нажатии на кнопку пользователем, выполнится наш JavaScript, который мы добавили в кнопку.