Вернуться   Форум SAPE.RU > Общие вопросы > Разработка и сопровождение сайтов

-->
Ответ
 
Опции темы
Старый 02.01.2009, 22:36   #1
Специалист
 
Аватар для kaxart
 
Регистрация: 24.05.2008
Сообщений: 364
Вес репутации: 215
kaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордится
Отправить сообщение для kaxart с помощью ICQ
По умолчанию Помогите с формами html в php

Простого решения пока не нахожу может кто-то подскажет...
Есть страница с формой которая отправляет данные на эту же страницу, данные проверяются и записываются в бд, затем выводятся на странице уже из бд. Все бы хорошо только при обновлении страницы данные дублируются и в бд и на странице соответственно, если не обновлять или перейти на другую страницу и обратно все норм. Перепробовал все, что знал простого решения не нахожу все только более сложные. Походу данные отправляются при обновлении от самого браузера. Как этому воспрепятствовать? Прошу писать только по делу.
kaxart вне форума   Ответить с цитированием
Старый 02.01.2009, 22:52   #2
Мастер
 
Аватар для DNA
 
Регистрация: 23.09.2008
Адрес: СССР
Сообщений: 683
Вес репутации: 230
DNA - прекрасное будущееDNA - прекрасное будущееDNA - прекрасное будущееDNA - прекрасное будущееDNA - прекрасное будущееDNA - прекрасное будущееDNA - прекрасное будущееDNA - прекрасное будущееDNA - прекрасное будущееDNA - прекрасное будущееDNA - прекрасное будущее
Отправить сообщение для DNA с помощью ICQ
По умолчанию

После записи в БД
header("Location: http://www.site.ru/");
+
Добавление параметра какого-нибудь к урлу
DNA вне форума   Ответить с цитированием
Старый 02.01.2009, 23:05   #3
Специалист
 
Аватар для kaxart
 
Регистрация: 24.05.2008
Сообщений: 364
Вес репутации: 215
kaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордится
Отправить сообщение для kaxart с помощью ICQ
По умолчанию

Спасибо за участие

Цитата:
Сообщение от DNA Посмотреть сообщение
После записи в БД
header("Location: http://www.site.ru/");
про header думал, только там одно но, header нужно ставить перед html пока так не получается надо подумать еще, может как-то код переставлю местами

Цитата:
Сообщение от DNA Посмотреть сообщение
Добавление параметра какого-нибудь к урлу
Попробую, кажется должно выйти. Спасибо.
kaxart вне форума   Ответить с цитированием
Старый 03.01.2009, 00:44   #4
Мастер
 
Аватар для DNA
 
Регистрация: 23.09.2008
Адрес: СССР
Сообщений: 683
Вес репутации: 230
DNA - прекрасное будущееDNA - прекрасное будущееDNA - прекрасное будущееDNA - прекрасное будущееDNA - прекрасное будущееDNA - прекрасное будущееDNA - прекрасное будущееDNA - прекрасное будущееDNA - прекрасное будущееDNA - прекрасное будущееDNA - прекрасное будущее
Отправить сообщение для DNA с помощью ICQ
По умолчанию

Цитата:
Сообщение от kaxart Посмотреть сообщение
про header думал, только там одно но, header нужно ставить перед html пока так не получается надо подумать еще, может как-то код переставлю местами
Можно так еще.
<script language="JavaScript">
window.location.href = "http://site.ru"
</script>

...
Но лучше всё-таки запрещать вставку дубликатов в БД.
DNA вне форума   Ответить с цитированием
Старый 03.01.2009, 02:32   #5
Специалист
 
Аватар для kaxart
 
Регистрация: 24.05.2008
Сообщений: 364
Вес репутации: 215
kaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордится
Отправить сообщение для kaxart с помощью ICQ
По умолчанию

Цитата:
Сообщение от DNA Посмотреть сообщение
Но лучше всё-таки запрещать вставку дубликатов в БД.
Это как? Поставить для данного поля уникальность? Не выходит для текстового поля. Или как-то по другому можно запретить вставку дубликатов?
kaxart вне форума   Ответить с цитированием
Старый 03.01.2009, 05:59   #6
Эксперт
 
Регистрация: 13.05.2008
Сообщений: 7,497
Вес репутации: 388
Апокалипсис - прекрасное будущееАпокалипсис - прекрасное будущееАпокалипсис - прекрасное будущееАпокалипсис - прекрасное будущееАпокалипсис - прекрасное будущееАпокалипсис - прекрасное будущееАпокалипсис - прекрасное будущееАпокалипсис - прекрасное будущееАпокалипсис - прекрасное будущееАпокалипсис - прекрасное будущееАпокалипсис - прекрасное будущее
По умолчанию

kaxart, перед постингом делать sql запрос, который будет проверять есть ли данная запись(и) в БД.
И Всё равно после сабмит, всегда нужно делать редирект, это так скажем правило хорошего тона.
Апокалипсис вне форума   Ответить с цитированием
Старый 03.01.2009, 06:21   #7
Э̀҉к͜с͜͏п̧́е͟р̶т̧̕
 
Аватар для Veem
 
Регистрация: 11.04.2008
Адрес: Маськва
Сообщений: 1,996
Вес репутации: 320
Veem - прекрасное будущееVeem - прекрасное будущееVeem - прекрасное будущееVeem - прекрасное будущееVeem - прекрасное будущееVeem - прекрасное будущееVeem - прекрасное будущееVeem - прекрасное будущееVeem - прекрасное будущееVeem - прекрасное будущееVeem - прекрасное будущее
По умолчанию

А индекс типа unique разве дает вставлять одинаковые данные? оО.
Также в mysql есть такая штука как REPLACE, синтаксис аналогичен INSERT'у.
+ Можно сделать скрытое поле, в которое при генерации страницы пишется некая инфа, если страница уже получила что-то через POST, чтобы при наличии такой инфы в скрытом поле запись в БД не происходила.
Но правильнее не лечить симптомы, а сделать-таки тот самый редирект.
На мой взгляд, еще правильнее заодно и вынести обработку в отдельный файл, а потом редиректить обратно. Это фича чисто для удобства потомков =)
__________________
Все мои сайты живут на этом хостинге с 2006 года. Ого, уже больше 10 лет.

Последний раз редактировалось Veem; 03.01.2009 в 06:27.
Veem вне форума   Ответить с цитированием
Старый 03.01.2009, 10:57   #8
Специалист
 
Аватар для kaxart
 
Регистрация: 24.05.2008
Сообщений: 364
Вес репутации: 215
kaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордитсяkaxart - за этого человека можно гордится
Отправить сообщение для kaxart с помощью ICQ
По умолчанию

Цитата:
Сообщение от Veem Посмотреть сообщение
А индекс типа unique разве дает вставлять одинаковые данные? оО.
Для текстового поля индекс unique не ставится, остальные поля не уникальны при каждом добавлении (ключ, дата+время). Таким образом REPLACE тоже отпадает.

Цитата:
Сообщение от Veem Посмотреть сообщение
Можно сделать скрытое поле, в которое при генерации страницы пишется некая инфа, если страница уже получила что-то через POST, чтобы при наличии такой инфы в скрытом поле запись в БД не происходила.
Данные не со страницы отправляются, с кодом бороться нет смысла все это уже прошел, данные отправляются от самого браузера при обновлении как-то так.

Цитата:
Сообщение от Veem Посмотреть сообщение
Но правильнее не лечить симптомы, а сделать-таки тот самый редирект.
На мой взгляд, еще правильнее заодно и вынести обработку в отдельный файл, а потом редиректить обратно. Это фича чисто для удобства потомков =)
Вот это выход.

Цитата:
Сообщение от Апокалипсис Посмотреть сообщение
перед постингом делать sql запрос, который будет проверять есть ли данная запись(и) в БД.
Да об этом думал, но это был последний вариант.

Цитата:
Сообщение от Апокалипсис Посмотреть сообщение
И Всё равно после сабмит, всегда нужно делать редирект, это так скажем правило хорошего тона.
Согласен.

Ребят всем спасибо. Чем могу тоже всегда помогу.
kaxart вне форума   Ответить с цитированием
Старый 03.01.2009, 15:58   #9
Э̀҉к͜с͜͏п̧́е͟р̶т̧̕
 
Аватар для Veem
 
Регистрация: 11.04.2008
Адрес: Маськва
Сообщений: 1,996
Вес репутации: 320
Veem - прекрасное будущееVeem - прекрасное будущееVeem - прекрасное будущееVeem - прекрасное будущееVeem - прекрасное будущееVeem - прекрасное будущееVeem - прекрасное будущееVeem - прекрасное будущееVeem - прекрасное будущееVeem - прекрасное будущееVeem - прекрасное будущее
По умолчанию

Цитата:
Сообщение от kaxart Посмотреть сообщение
Для текстового поля индекс unique не ставится, остальные поля не уникальны при каждом добавлении (ключ, дата+время). Таким образом REPLACE тоже отпадает.
Перед написанием предыдущего поста я специально пошел и создал unique на двух полях, включая поле типа TEXT. Или он при этом не работает?

Цитата:
Сообщение от kaxart Посмотреть сообщение
Данные не со страницы отправляются, с кодом бороться нет смысла все это уже прошел, данные отправляются от самого браузера при обновлении как-то так.
А, да, точняк...
__________________
Все мои сайты живут на этом хостинге с 2006 года. Ого, уже больше 10 лет.
Veem вне форума   Ответить с цитированием
Старый 03.01.2009, 18:29   #10
Мастер
 
Регистрация: 17.03.2008
Сообщений: 638
Вес репутации: 239
ahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущее
По умолчанию

Надеяться на редирект тоже неправильно, при задержке в сети можно F5 несколько раз в браузере жмакнуть.
Самое правильное уникальный ID добавлять в базу (как предлагали выше) или на крайняк IP адреc и запрещать постить чаще определенного числа раз, но такой способ может теоретически блочить посетителей, если они с одного прокси выходят в сеть.

В обоих случаях нужно дополнительный запрос делать на проверку добавления.
ahsinis вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти ошибку в 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.