Прекратить повторную отправку страницы после сообщения с F5 - PullRequest
2 голосов
/ 13 сентября 2009

После отправки формы с методом post f5 отправит ее повторно. Что лучше, чтобы избежать этого без перенаправления страницы. Я не хотел бы беспокоить пользователя, как это. Stackoverflow неуязвимы для f5, но я не вижу перенаправления после того, как задаю вопрос.

Ответы [ 3 ]

7 голосов
/ 13 сентября 2009

Получить после сообщения

  • Форма делает запрос POST
  • Форма обработки кода
  • Код перенаправляет с помощью заголовка Location

Результат: обновление получившейся страницы просто отобразит ее снова, поскольку это было сделано с помощью GET.

6 голосов
/ 13 сентября 2009

StackOverflow довольно тяжёлый AJAX, поэтому вы видите поведение, которое видите.

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

if (! empty($_POST)){
   // Do something with the contents of $_POST
   header('Location: success.php');
}

Теперь, если ваша проверка не пройдена, вы, вероятно, перезагрузите форму с некоторыми сообщениями об ошибках, и, нажав F5, повторно отправит данные. Но если операция прошла успешно, пользователь будет перенаправлен на вашу страницу успеха, и он может весь день забивать f5 без повторного размещения данных и потенциального создания дублирующих действий.

3 голосов
/ 13 сентября 2009

Стандартный подход для достижения этого эффекта заключается в использовании перенаправления HTTP, что не очевидно для пользователя (поэтому я предполагаю, что вы ссылаетесь на задержку перенаправления метаобновления).

См. Шаблон переадресации после получения .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...