У меня есть страница редактирования формы для редактирования моих сообщений на сайте. Он использует метод post на той же странице. Если форма скомпилирована правильно, отображается сообщение congrats.
Проблема:
Когда пользователи нажимают кнопку обновления, скрипт пытается повторно отправить данные на страницу. Есть ли способ избежать этого?
благодаря
Лука
Общая схема шаблона PRG такова:
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) { /// do your magic $_SESSION['error'] = "Thanks for your message!"; // this should be the full URL per spec, but "/yourscript.php" will work $myurl = ...; header("Location: $myurl"); header("HTTP/1.1 303 See Other"); die("redirecting"); } if ( isset($_SESSION['error']) ) { print "The result of your submission: ".$_SESSION['error']; unset($_SESSION['error']); }
Вам нужно использовать шаблон PRG .
Это называется шаблоном Post / Redirect / Get . Вы делаете это, отвечая на запрос POST с помощью перенаправления 302/303, что предотвращает это неприятное поведение на клиенте.
Вы можете узнать больше об этом в приведенной выше ссылке.