LINUX.ORG.RU

[похапе] Повторная отправка данных при обновлении


0

0

Привет.

После отправки данных из HTML-формы при обновлении страницы браузер будет пытаться отправить данные повторно. Я сейчас выхожу из положения за счет того, что в функциях, обрабатывающих запросы из форм делаю так:

Header(«Location: $PHPSELF»)

Есть ли более правильный способ?

в дополнение к этому варианту можно показываемой форме давать id-шник в зависимости от логики работы, и при повторной отправке игнорировать запрос или показывать результат предыдущей отправки формы.

qnikst ★★★★★
()

Это к пхп отношения не имеет - особенности современных умных браузеров.

Я обычно перенаправляю на страницу вида «ваши данные успешно отправлены» - это реализуется быстро, да и пользователю понятно.

Впрочем, можно и на ту же страницу, выводя соответственное сообщение.

anonymous
()
Ответ на: комментарий от anonymous

Такой способ создает избыточную нагрузку за счет повторного, не нужного, обращения к страничке с формой отправки. Совсем без вариантов?

Frakhtan-teh ★★
() автор топика

А я обычно выношу обработчик формы в отдельный метод экшена, который принимает данные и перенаправляет обратно (header ('location: ...')) на страницу с формой. И для пользователя удобно (он этого не замечает), и для меня тоже, т.к. происходит логическое выделение обработчика формы в отдельный метод экшена.

Wizard_ ★★★★★
()
Ответ на: комментарий от Frakhtan-teh

>Такой способ создает избыточную нагрузку за счет повторного, не нужного, обращения к страничке с формой отправки. Совсем без вариантов?

Какой способ? Отдельная страница-подтверждение об отправке?. Как раз с неё можно отправить человека по ссылке например на главную, или ещё куда, так как после отправки формы во многих случаях человеку форма уже не нужна.

anonymous
()
Ответ на: комментарий от Frakhtan-teh

> Совсем без вариантов?

ну почему же.. сделай ajax форму. страница вообще перегружаться не будет.

isden ★★★★★
()

>Header(«Location: $PHPSELF»)

Я тоже делаю переадресацию. Хотя, естественно, и не на таком низком уровне, собственно, этим обработчик формы фреймворка занимается сам.

KRoN73 ★★★★★
()
Ответ на: комментарий от qnikst

>мои сообщения сознательно игнорируются? ;)

Твой вариант с id и необработкой формы не всем хорош - тот же фаерфокс показывает неприятное всплывающее предупреждение «отправить данные заново?», и пофиг, что они не будут обрабатываться - пользователю всё равно будет мешать.

anonymous
()
Ответ на: комментарий от anonymous

ключевые слова «в дополнение». переадресация это хорошо и нужно, но не гарантирует того, что пользователь не отправит форму ещё раз тогда, когда это не должно быть возможно исходя из логики проекта.

qnikst ★★★★★
()
Ответ на: комментарий от qnikst

Кстати, выглядит хорошо и адекватно. Спасибо, беру на вооружение.

Frakhtan-teh ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.