Народ, спам в формах — боль и раздражение, все на это натыкаются. Если просто делать обычную проверку типа empty() и фильтр валидности email, то толку мало. Боты сейчас умные, гоняют сотни запросов в секунду.
Часто вижу, что люди сразу ставят капчу — нормально, но далеко не всегда юзабельно, да и есть бесплатные решения, что заедают меньше-шифруют. Кроме капчи, я для себя заметил, что неплохо помогает таймстамп: сохраняешь время загрузки формы и проверяешь, чтобы она не отправлялась быстрее, чем за пару секунд — бот тогда сливается. Еще нормально работает проверка "скрытого" поля (honeypot) — обычные пользователи его не заполняют, а боты цепляются и выдаются.
Проверяйте еще User-Agent и IP, если повторяются слишком часто отправки — блокируйте. Ну и не забывайте банально фильтровать данные через filter_var и чистить все на входе.
Кому что реально зашло из практики? Какими неожиданными методами боретесь с мусором?