Вопрос № 103452: Здравствуйте ув. эксперты
У меня такой вопросик. После отправки данных через форму методом POST, например, добавление сообщения в гостевую книгу, как мне заблокировать повтор добавления при нажатии на кнопку "обновить страницу"?...
Вопрос № 103.452
Здравствуйте ув. эксперты
У меня такой вопросик. После отправки данных через форму методом POST, например, добавление сообщения в гостевую книгу, как мне заблокировать повтор добавления при нажатии на кнопку "обновить страницу"?
Отправлен: 26.09.2007, 14:56
Вопрос задал: Zotaper (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Kruphi
Здравствуйте, Zotaper!
1) Этот вариант встречается на многих форумах - После получения данных хранить ip-адрес (лучше сессию) отправителя и в течении N секунд (например 10-20) запрещать повторную отправку любых сообщений
2) Более трудоемкий вариант (с точки зрения загрузки сервера) - Проверять поступающие данные (возможно вкупе с ip-адресом отправителя или данные сессии) и сравнивать с уже полученными данными. Если полное совпадение - не добавлять.
Ответ отправил: Kruphi (статус: 2-ой класс)
Ответ отправлен: 26.09.2007, 15:13 Оценка за ответ: 2 Комментарий оценки: Очень интересный ответ, но похоже вы меня не поняли или вы не сталкивались с подобным. Предлагаемые вами методы слишком уж сложны для простой операции и заставили меня порыться в литературе и найти этот способ, я его уже раньше находил, но просто забыл где и из-за этого задал вопрос. А решение очень просто: его описал второй отвечающий. Вам 2!
Отвечает: Бородин Александр Олегович
Здравствуйте, Zotaper!
Лучше всего, на мой взгляд, так сделать. После добавления всех данных в хранилище(я имею в виду таблицу или файл, просто не знаю, в чем Вы сообщения храните) нужно переадресовать браузер функцией header на какую-либо страницу, скорее всего, на эту же - только в урл надо добавить какой-нибудь доп. параметр. Тогда при нажатии кнопки "обновить" данные по новой добавляться не будут.
Естественно, перед вызовом функции header в браузер не должны выкидываться никакие данные, иначе переадресации не произойдет.
Дополнительно можно при отправке блокировать кнопку отправки формы.
--------- Ничто не сближает людей так, как совместное преступление.
Ответ отправил: Бородин Александр Олегович (статус: 10-ый класс)
Ответ отправлен: 26.09.2007, 17:50 Оценка за ответ: 5 Комментарий оценки: Отличный ответ, то что надо, правда пока Вы отвечали, я уже сам в литературе нашел его. Огромное Вам спасибо за то, что потрудились ответить!
Отвечает: K0rvin
Здравствуйте, Zotaper!
Для этого можно использовать редирект либо промежуточную страницу с сообщением, как на многих форумах.
Ответ отправил: K0rvin (статус: 2-ой класс)
Ответ отправлен: 28.09.2007, 13:49