Вопрос по обработке формы

Статус
В этой теме нельзя размещать новые ответы.
Не усложняйте себе жизнь..как только внесли в БД данные..очищайте форму refresh-ем...
PHP:
$r = mysql_query (
"INSERT INTO....

if ($r == 'true'){
exit("<meta http-equiv='refresh' content='0; url=$_SERVER[PHP_SELF]'>");
}
 
Всмысле если отправить - данные в БД добавятся. И если обновить, они ещё раз добавляются.
Это если в опере,в фоксе обычно вылетает сообщение и спрашивает,отправить или нет,а в ИЕ (недобраузере) я даже не тестил.
Не усложняйте себе жизнь..как только внесли в БД данные..очищайте форму refresh-ем...
Так это же обновление страницы и наврят ли поможет как мне кажется:)

p.s.: у меня такая фигня раньше тоже была,но я её быстро обошёл без всяких рефрешей
 
Когда кажется ..креститься надо..:) а в программенге надо проверять и говорить о полученных результатах или ошибках..
 
На страничке с формой создать сесия с уникальным ключем, записать ключ в таблицу бд потом на странички обработки скрипта читать сесию проверять есть ли такая в бд если есть то ее удалить и выполнять скрипт добавления если нету то остановить все действия
 
Может я не так понял, но вот:
PHP:
if ($_POST['send']){
header('Location: script.php');
}

Ерунда. Получится всегда перенаправление без обработки данных. Тоесть при каждом клике на форме будет перенаправление на себя.

Любой нормальный браузер при обновлении страницы через F5 отсылает повторно POST данные, от этого не избавится. Можно пойти двумя вариантами:

1. Как говорилось раньше, проверять в БД на наличие аналогичных данных, дабы небыло дублирования.

2. Средствами JavaScript запретить Submit формы чаще чем 20-30 секунд (смотря насколько большая форма, тоесть за сколько реально её заполнить настоящими данными), или средствами того же JavaScript генерировать Hash полей и при сабмите сверять, не отправлялся ли такой же hash перед этим (но всеравно проверку с БД нужно делать, дубляж штука вредная :) )
 
Ерунда. Получится всегда перенаправление без обработки данных. Тоесть при каждом клике на форме будет перенаправление на себя.

Любой нормальный браузер при обновлении страницы через F5 отсылает повторно POST данные, от этого не избавится. Можно пойти двумя вариантами:

1. Как говорилось раньше, проверять в БД на наличие аналогичных данных, дабы небыло дублирования.

2. Средствами JavaScript запретить Submit формы чаще чем 20-30 секунд (смотря насколько большая форма, тоесть за сколько реально её заполнить настоящими данными), или средствами того же JavaScript генерировать Hash полей и при сабмите сверять, не отправлялся ли такой же hash перед этим (но всеравно проверку с БД нужно делать, дубляж штука вредная :) )

Что значит Ерунда?
Идет проверка формы на правильность заполнения, после проверки, если все правильно заполнено, форма отправляется в базу и идет перенаправление.
Вопрос был поставлен по поводу F5.
PHP:
if (!empty($send)) { // если все заполнено, то
// отправляем что надо в базу
...
header( 'Location: /index.php?opt=ok' ); // и перенаправляем на страницу
}
Теперь хоть нажимай F5, хоть не нажимай, ничего повторно не отправится.
Или я не прав?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху