Хочу после отправки формы вывести сообщение об успехе. Как известно, после отправки формы рекомендуется перегрузить страницу с помощью header ("location: _same_page_"). В противном случае при обновлении страницы браузер будет предлагать снова отправить форму, а если юзер согласится, получим дубли в БД. Также, как известно, PHP не сохраняет состояния между HTTP-запросами. Чтобы передать обновленной странице известие, что ей надо вывести алерт, я использую метод GET: Код (Text): header ("location: /same_page/?alert=seccess") А в начале страницы ставлю: Код (Text): if (isset($_GET['alert']) and $_GET['alert'] == 'success') { // выводим алерт } Итого, схема кода в целом выглядит так: Код (Text): if (isset($_GET['alert']) and $_GET['alert'] == 'success') { // выводим алерт } if(isset($_POST['submit'])) { // обрабатываем форму, отправляем данные в БД header ("location: /same_page/?alert=seccess") } После успешной обработки данных пользователь оказывается на странице /same_page/?alert=seccess", видит алерт. Но любые последующие обновления страницы само собой оставляют его на этой же странице с параметром alert , что снова воспроизводит плашку с информацией об успешном добавлении данных. Сломал себе голову, как можно это обойти - ничего не придумал. Подскажите, как решаются такие задачи. PS: Почему-то подумалось про JavaScript - но в нем, увы, не силен. Правда, если окажется, что без него никак - готов разбираться. Спасибо!
вы делаете гет-запрос с параметром алерт. и видите алерт. при обновлении страницы браузер повторит гет-запрос и пользователь снова увидит алерт. тут жс совсем ни при чем. вам нужно просто подумать как сделать алерт уникальным.
В популярных фреймворках для одноразовых сообщений применяют т.н. flash messages. Это значения хранятся в сессии, после чтения удаляются — поэтому одноразовые. В принципе то же самое можно сделать в куке, на одну короткую строку куки хватит.