По сути, вы не хотите, чтобы пользовательский запрос завершался, когда они POST
отправляют данные на html-страницу. Вам следует перенаправить их на страницу GET
, чтобы их браузер считал их последним известным местоположением, а перенаправления - как часть общего запроса в браузерах.
// receive $_POST
// ... do work ...
// success!
header('Location: /wherever', true, 302);
Для этого обычно используется метод Found
, позволяющий переходить от одного глагола к другому (хотя часто используются и другие глаголы, например, 303, но ... да, просто используйте 302)
Это должно решить вашу проблему!
Примечание: В этом конкретном случае особенно полезны такие вещи, как сессии Flash. Вы хотите, чтобы данные следовали за ними на перенаправленной странице, поэтому вы можете сказать: «О, вы вошли!» или что угодно. Это их цель. Есть несколько способов убрать этого зверя, но я просто хотел, чтобы вы знали.
Примечание. ++ : другие пользователи упоминали об этом, но это стоит повторить. Хотя вышеперечисленное решает вашу проблему, стандартное соглашение для форм поиска заключается в использовании GET
<form method="get" action="/search">
<input name="q">
<button type="submit">Search</button>
</form>
Это сделано по нескольким причинам, но именно так, чтобы результаты поиска были индексируемыми, закладками и общими.
POST
обычно резервируется для больших двоичных объектов данных или конфиденциальных типов данных. Есть и другие варианты использования, такие как глаголы REST и т. Д., Но я слишком упрощаю вопрос.
К этому моменту убедитесь, что вы urldecode($_GET)
свои данные.