![]() |
#1 |
Специалист
|
![]() Простого решения пока не нахожу может кто-то подскажет...
Есть страница с формой которая отправляет данные на эту же страницу, данные проверяются и записываются в бд, затем выводятся на странице уже из бд. Все бы хорошо только при обновлении страницы данные дублируются и в бд и на странице соответственно, если не обновлять или перейти на другую страницу и обратно все норм. Перепробовал все, что знал простого решения не нахожу все только более сложные. Походу данные отправляются при обновлении от самого браузера. Как этому воспрепятствовать? Прошу писать только по делу. |
![]() |
![]() |
![]() |
#3 |
Специалист
|
![]() Спасибо за участие
про header думал, только там одно но, header нужно ставить перед html пока так не получается надо подумать еще, может как-то код переставлю местами Попробую, кажется должно выйти. Спасибо. |
![]() |
![]() |
![]() |
#4 | |
Мастер
|
![]() Цитата:
<script language="JavaScript"> window.location.href = "http://site.ru" </script> ... Но лучше всё-таки запрещать вставку дубликатов в БД. |
|
![]() |
![]() |
![]() |
#5 |
Специалист
|
![]() |
![]() |
![]() |
![]() |
#6 |
Эксперт
Регистрация: 13.05.2008
Сообщений: 7,497
Вес репутации: 388
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() kaxart, перед постингом делать sql запрос, который будет проверять есть ли данная запись(и) в БД.
И Всё равно после сабмит, всегда нужно делать редирект, это так скажем правило хорошего тона.
__________________
|
![]() |
![]() |
![]() |
#7 |
Э̀҉к͜с͜͏п̧́е͟р̶т̧̕
Регистрация: 11.04.2008
Адрес: Маськва
Сообщений: 1,996
Вес репутации: 320
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() А индекс типа unique разве дает вставлять одинаковые данные? оО.
Также в mysql есть такая штука как REPLACE, синтаксис аналогичен INSERT'у. + Можно сделать скрытое поле, в которое при генерации страницы пишется некая инфа, если страница уже получила что-то через POST, чтобы при наличии такой инфы в скрытом поле запись в БД не происходила. Но правильнее не лечить симптомы, а сделать-таки тот самый редирект. На мой взгляд, еще правильнее заодно и вынести обработку в отдельный файл, а потом редиректить обратно. Это фича чисто для удобства потомков =)
__________________
Последний раз редактировалось Veem; 03.01.2009 в 06:27. |
![]() |
![]() |
![]() |
#8 | ||||
Специалист
|
![]() Для текстового поля индекс unique не ставится, остальные поля не уникальны при каждом добавлении (ключ, дата+время). Таким образом REPLACE тоже отпадает.
Цитата:
Цитата:
Цитата:
Цитата:
Ребят всем спасибо. Чем могу тоже всегда помогу. |
||||
![]() |
![]() |
![]() |
#9 | ||
Э̀҉к͜с͜͏п̧́е͟р̶т̧̕
Регистрация: 11.04.2008
Адрес: Маськва
Сообщений: 1,996
Вес репутации: 320
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
Цитата:
![]()
__________________
|
||
![]() |
![]() |
![]() |
#10 |
Мастер
Регистрация: 17.03.2008
Сообщений: 638
Вес репутации: 239
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Надеяться на редирект тоже неправильно, при задержке в сети можно F5 несколько раз в браузере жмакнуть.
Самое правильное уникальный ID добавлять в базу (как предлагали выше) или на крайняк IP адреc и запрещать постить чаще определенного числа раз, но такой способ может теоретически блочить посетителей, если они с одного прокси выходят в сеть. В обоих случаях нужно дополнительный запрос делать на проверку добавления. |
![]() |
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите найти ошибку в HTML | asna | Деловое сотрудничество | 9 | 07.11.2008 19:55 |
HTML, SSI и разбиение на блоки. Помогите сделать | ptil | Установка кода на различные движки | 3 | 12.06.2008 04:34 |
Помогите, пожалуйста! Сайт на html | Leida | Контекстные ссылки и все, что с ними связано | 2 | 02.03.2008 13:54 |
Помогите подключить к сапу сайт (html) | warlord727 | Вопросы по работе системы | 13 | 24.09.2007 13:48 |
Помогите разместить код на сайт написанный на HTML | wmrussian | Вопросы по работе системы | 9 | 13.09.2007 17:00 |
Часовой пояс GMT +3, время: 08:45.