Есть такая тема когда вводишь запрос и отправляешь его методом POST то при нажатии F5 или обновить страницу оно повторяет полностью весь запрос с постом, то есть плодит дубли. Эту тему обходят перезапросом страницы методом GET с помощью отправки HTTP заголовка Location на себя же. Может кто знает другой способ обойти это?
Jeremen, если конкретней, как сказал TBicTep создать поле hidden в форме и заполнить его например датой (в юникс тайм), и по ней уже смотреть уникальность. Или перенаправлять сразу после обработки формы типа header('Location : /');
А сейчас еще лучше это сделать вообще через AJAX (ну только желательно кнопку отправки формы сделать disable после нажатия :)
TBicTep,а если нужно такие же точно параметры отправить? ну возможно не сейчас, через день, неделю...? С помощью ajax хорошо проверять, можно вообще отключить отправку формы до заполнения всех полей, а после отправки - очищать эти поля, чтобы заполняли заново
Возможно вариант не самый лучший , но можно сверятся с базой данных последних сообщений и если что выкидывать на любую страницу или страницу с предупреждением + отправлять в бан аккаунт автоматом при повторных сообщениях (если время отправки одинаково или просто повторно)
---------- Сообщение добавлено 19:57 ---------- Предыдущее 19:53 ----------
Кстати не знаю сам как ,но можно сделать ограничения по запросам к сайту к примеру от 4-5 в 1 секунду , тоже спасет от таких повторов
Jeremen, можно в хидден добавить какую-нибудь переменную и сохранить ее в БД/сессиях/кукисах после отправки пост запроса удалять при повторной отправке запроса проверить, если нет этой переменной, то ничего не делать
ctapbiu, не до конца задумку понял. kvins, ну так можно, но не вариант затратно по ресурсам с базой работать. На счет ограничения запросов в секундах на пользователя это тема. Но не спам я хотел обойти, а случайные отправки дублей, так что не совсем вариант.
Но не спам я хотел обойти, а случайные отправки дублей, так что не совсем вариант.
Из самого простого, если не использовать локейшен и редиректы всякие, то после добавления инфы с формы, создаём переменную и заносим в сессию с жизнью например 1 минута. Ну и естественно в обработчик формы добавляем условие на проверку существования этой переменной.