Как запретить отправку формы в течении 30 минут?

Есть форма на лендинге, но последнее время ее стали досить, приходят подряд по 20 писем с 1 IP, вчера уже заблочил ip на хостинге, а форма все равно отправляет. Как бы сделать так чтобы пользователь мог отправить форму только 1 раз скажем в течении 30 минут?
  • Вопрос задан
  • 1169 просмотров
Пригласить эксперта
Ответы на вопрос 3
@Beltoev
Живу в своё удовольствие
Форму оставляете как есть, а в БД создаете табличку с полями: IP, время отправки, еще какие-то данные, чтобы идентифицировать пользователя.

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

Важен факт того, чтобы злоумышленник всё так же думал, что вредит вам, хотя на самом деле вы его давно обошли. Так он не будет пытаться придумывать новые способы вам что-нибудь испортить
Ответ написан
sbh
@sbh
Добавить капчу - как самое простое.
Добавлять куки файл пользователю где ставите отметку входа например.
Далее после нажатия кнопки сверяете разницу во времени между значением из куки и текущим временем.
Ответ написан
daager
@daager
Новые капчи, иногда не нужно вбивать символы:
https://nocaptcha.mail.ru/
https://www.google.com/recaptcha/intro/index.html

Если форму заполняет бот(именно бот, не человек автоматизирует процесс), то можно создать
<input type='password' name='password' class='hide-me'>
и проверять, если на сервере $_post['password'] не пустой, значит его автоматом забил бот. Либо наоборот, скрытое заполненное поле, при клике по кнопке "отправить" js его обнуляет. Зависит конечно от бота, но событие click они часто не вызывают, значит при отправке формы наше поле не будет пустым, что снова должно насторожить.

Идеально выяснить, как точно вас спамят и от этого отталкиваться.
Ну и на сервере проверять, что была ли заявка с этого ip. Чтобы не вспугнуть реального пользователя, можно делать, что если повторная заявка в течение получаса, то выводить сообщение, что заявка уже была принята и мы свяжемся как только сможем.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы