Intereting Posts
Перенос чистого PHP-проекта в структуру Yii Как исправить PHP Warning: PHP Startup: не удается загрузить динамическую библиотеку 'ext \\ php_curl.dll'? Неупорядоченный список – позиция позиции списка Манипуляция строк запроса PHP Как получить продукты из определенной категории в magento электронной коммерции Ошибка в получении последнего вставленного идентификатора запроса с использованием пакетной вставки в CodeIgniter Как загрузить файл php без его выполнения? Aptana как активный просмотр каталог не создается при запуске сценария оболочки bash в php Как синхронизировать таймер обратного отсчета javascript с сервером Отправка веб-сайта для восстановления на сервере Android Сообщение об ошибке echo pdo при вводе неверного имени пользователя или пароля регенерирующий идентификатор сеанса PHP получает время создания каталога Передача строк со специальными символами

Кнопка «Назад» повторно отправляет данные формы ($ _POST)

Моя проблема заключается в том, что кнопка «Назад» заставляет браузер говорить что-то вроде «Страница истек», когда предыдущая страница была создана формой.

Пример:

  • page1: форма, отправленная с критериями поиска (запрос $ _POST, форма указывает на страницу2)
  • page2: получает запрос $ _POST и показывает результат (список пользователей со ссылками, указывает на страницу3)
  • page3: Показать профиль пользователя

Теперь, когда посетитель нажимает кнопку «Назад» в браузере, он покажет что-то вроде «Страница истек».

Вместо этого предыдущая страница должна отображаться без предупреждений (стр. 2, с пользовательским списком)

Как ваши стратегии обойти это поведение?

Solutions Collecting From Web of "Кнопка «Назад» повторно отправляет данные формы ($ _POST)"

Если вы отправляете параметры поиска с параметрами поиска, вы пытаетесь получить некоторые данные, а не модифицировать их.

Таким образом, вы должны использовать метод HTTP GET, а не POST: POST следует использовать, когда вы собираетесь создавать / изменять данные, а GET следует использовать, когда вы собираетесь извлекать некоторые данные.

Или, если у вас есть операция создания / изменения, которая должна быть выполнена:

  • Форма первых POST на первую страницу
    • Эта страница выполняет некоторые операции (например, что-то записывает в базу данных)
    • А затем перенаправляется на другую страницу, используя HTTP-заголовок Location .
  • Это последняя страница, это запросы браузера с использованием запросов GET, которые отображают данные, полученные из параметров, полученных в URL-адресе.

См. Страницу Post / Redirect / Get в википедии, об этом.

Используйте шаблон Post / Redirect / Get (PRG) .

Шаблон PRG

Отправьте заголовок Location в сценарий, на который вы отправили сообщение, указав на страницу, которая появляется после.

Не используйте POST для поиска. Поиск можно безопасно выполнить с помощью GET, поскольку он ничего не изменит.

Это относится к PHP и IE8.

Необходимо не только настроить кеширование на личную, но вы должны удалить 4 заголовка кеширования, и это можно сделать только с помощью PHP 5.3. В PHP 5.2 вы можете установить только 4 заголовка в пустые значения, используя метод setHeader () Zend Framework. По некоторым причинам недостаточно для IE8 установить 4 значения заголовка в пустые значения. Вот код для PHP 5.3:

  header_remove("Expires"); header_remove("Cache-Control"); header_remove("Pragma"); header_remove("Last-Modified"); 

Вы можете использовать сеанс для этого.

например.

$ _SESSION ['name'] = $ _POST ['name'];

Повторите, чтобы отключить переменные после завершения процесса для оптимизации использования памяти.