|
39 / 9 / 10
Регистрация: 19.09.2016
Сообщений: 1,098
|
||||||
Как при обновлении страницы избежать повторной отправки POST запроса с передачей переменных в шаблон?23.06.2020, 12:23. Показов 4108. Ответов 24
Метки нет (Все метки)
Есть страничка юзера, на ней форма изменения роли(админ/юзер). Реализовано на радиокнопках и кнопке подтверждения выбора.
При всех вариантах событий на страничку должно выводиться сообщение об успешной или неудачной операции. Видел варианты - переадресовывать на ту же страничку. но я тогда не знаю, как правильно передавать сообщения в шаблон. Пробовал делать unset, вижу. что при обновлении странички уже нет переменной $_POST['role'], но условие if(isset($_POST['role'])) не срабатываетСам обработчик:
0
|
||||||
| 23.06.2020, 12:23 | |
|
Ответы с готовыми решениями:
24
Повторение POST запроса при обновлении страницы Запретить повторную отправку POST запроса при обновлении страницы Как избежать повторной отправки формы? |
|
2605 / 1509 / 689
Регистрация: 23.08.2015
Сообщений: 3,841
|
||||||||||||||||||||||||||
| 24.06.2020, 15:39 | ||||||||||||||||||||||||||
Сообщение было отмечено СергейСереб как решение
Решение
СергейСереб, Сообщения можно передавать через сессии, как вам выше уже написали. Это так называемые флеш-сообщения. Суть в том, что мы по определенному ключу сохраняем сообщение, а при получении его удаляем. Таки образом оно выведется только один раз. Если вы будете сообщения передавать через get параметры, то они будут выводиться при обновлении страницы. Что не очень хорошо, особенно, если этой ссылкой будут делиться.
Для удобства и повторного использования можно вынести в функции/хэлперы.
Далее, смена роли - это операция, а операции принято делать таким образом, что она либо выполняется полностью, либо кидает исключение. Для этого выделяют отдельный Операционный слой (отдельный класс).
В данном случае, я использовал некую абстрактную коллекцию Объектов UserRepository, чтоб не заморачиваться с БД. Кстати это одна из основных ее функций, чтоб мы не отвлекались от логики предметоной области. Сейчас ее особо нет. Но и запросы могут быть сложными и методы операционного слоя могут быть большими. Вывод сообщений в шаблоне
1
|
||||||||||||||||||||||||||
|
1460 / 1013 / 232
Регистрация: 01.10.2018
Сообщений: 3,948
|
|||||
| 24.06.2020, 19:01 | |||||
![]() Т.е. в этом случае нужно делать проверки в разных конструкторах или вызывать/наследовать родительский конструктор. А главное зачем создавать массивный объект, который будет бесполезен при неавторизованных запросах? Проверка авторизации во фронт-контроллере в этом отношении предпочтительнее.
1
|
|||||
|
39 / 9 / 10
Регистрация: 19.09.2016
Сообщений: 1,098
|
||||
| 24.06.2020, 22:29 [ТС] | ||||
|
sad67man, Более полный, подробный, налядный ответ с примерами представить сложно) С флеш-сообщениями понравилась идея. супер. Сессиями я пользовался раньше для вывода сообщений, но в другом контексте. А тут так все четко, аккуратно организовано в ООП стиле!
Спасибо большое всем за помощь!
0
|
||||
|
2605 / 1509 / 689
Регистрация: 23.08.2015
Сообщений: 3,841
|
|||||||||||||||||||||
| 26.06.2020, 20:07 | |||||||||||||||||||||
|
СергейСереб, Хочу подкинуть такую тему для размышления. Вообще, если говорить о суперглобальных переменных, таких как $_POST, то тут есть один интересный момент. К примеру некоторые начинающие при постройке своего MVC приложения в точке входа пишут что-то типа такого
Т.е. уже action контроллера уже будет выглядеть примерно так. (Код написан схематически чисто для примера.)
1
|
|||||||||||||||||||||
|
39 / 9 / 10
Регистрация: 19.09.2016
Сообщений: 1,098
|
|
| 26.06.2020, 21:46 [ТС] | |
|
0
|
|
| 26.06.2020, 21:46 | |
|
Как избежать добавление в БД при обновлении страницы? Защита от повторной отправки POST-данных
Чтение данных с XML, как избежать повторной операции при следующей загрузке формы После повторной отправки Get-запроса и парсера выдается предыдущий результат Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|