PHP: вернуться на предыдущую страницу с HTTP POST

У меня есть приложение PHP со страницей, которая имеет форму для поиска данных. Когда я нажимаю на кнопку поиска, появляется страница Sumbit с методом HTTP POST. В этот момент я нажимаю на один элемент в списке результатов и перехожу на другую страницу. Если я нажимаю кнопку «Назад» в браузере на новой странице, я получаю ошибку «Срок действия документа истек». Зачем? Что я могу попытаться решить эту проблему?

Вот схематическое резюме:

СТРАНИЦА A -> HTTP Post Отправить на СТРАНИЦУ A -> СТРАНИЦУ B -> ВЕРНУТЬСЯ НА СТРАНИЦУ A -> ОШИБКА

Заранее спасибо.

-3

Решение

По сути, вы не хотите, чтобы запрос пользователя завершался, когда он POST данные на HTML-страницу. Вы должны перенаправить их на GET страница, поэтому их браузер рассматривает это как свое последнее известное местоположение, как перенаправления обрабатываются как часть общего запроса в браузерах.

// receive $_POST
// ... do work ...
// success!
header('Location: /wherever', true, 302);

Found для этого обычно используется метод, позволяющий переходить от одного глагола к другому (хотя часто используются и другие глаголы, например, 303, но … да, просто используйте 302)

Это должно решить вашу проблему!


Примечание: В этом конкретном случае особенно полезны такие вещи, как сессии Flash. Вы хотите, чтобы данные следовали за ними на перенаправленной странице, поэтому вы можете сказать: «О, вы вошли!» или что угодно. Это их цель. Есть несколько способов убить этого зверя, но я просто хотел, чтобы ты знал.


Side Note ++Другие пользователи упоминали об этом, но это стоит повторить. Хотя вышеперечисленное решает вашу проблему, стандартным соглашением для форм поиска является использование GET

<form method="get" action="/search">
<input name="q">
<button type="submit">Search</button>
</form>

Это сделано по нескольким причинам, но именно так, чтобы результаты поиска были индексируемыми, закладками и общими.

POST обычно зарезервирован для больших двоичных объектов данных или для конфиденциальных типов данных. Существуют и другие варианты использования, такие как глаголы REST и т. Д., Но я слишком упрощаю вопрос.

К этому моменту обязательно urldecode($_GET) ваши данные.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector