Форма get's resent при обновлении

Form get's resent on refresh, я прочитал о header("Location:my_page.php") unset($_POST) , но я не уверен, где его разместить.

Это наш скрипт, он работает по мере необходимости, но он сохраняет повторную отправку на странице обновления (уведомления браузера Chrome снова и снова), может ли кто-то исправить код и объяснить моему, как 2-летнему ребенку.

 <form action='thi_very_same_page.php' method='post'> Search for Christian Movies <input type='text' name='query' id='text' /> <input type='submit' name='submit' id='search' value='Search' /> </form> <?php if (isset($_POST['submit'])) { mysql_connect("localhost", "root", "toor") or die("Error connecting to database: " . mysql_error()); mysql_select_db("db_name") or die(mysql_error()); $query = $_POST['query']; $min_length = 2; if (strlen($query) >= $min_length) { $query = htmlspecialchars($query); $query = mysql_real_escape_string($query); echo ""; $result = mysql_query("SELECT *, DATE_FORMAT(lasteditdate, '%m-%d-%Y') AS lasteditdate FROM movies WHERE (`moviename` LIKE '%" . $query . "%') OR (`year` LIKE '%" . $query . "%')") or die(mysql_error()); if (mysql_num_rows($result) > 0) { while ($results = mysql_fetch_array($result)) { echo ""; } } else { echo ""; } } else { echo ""; } } 

    Если вы имеете в виду, что данные формы снова отправляются после обновления, проверьте этот метод

    http://www.andypemberton.com/engineering/the-post-redirect-get-pattern/

    Вы устанавливаете заголовок заголовком ('HTTP / 1.1 303 See Other');

    Данные не будут кэшироваться, поэтому, когда страница обновит данные формы, они не будут снова отправлены!

    Проблема заключается в том, что вы используете метод post для отправки значений формы, поэтому, когда вы пытаетесь обновить браузер, вы спрашиваете, следует ли отправлять информацию о форме или нет, это поведение браузера по умолчанию для решения размещенной информации, альтернативное решение для вашей проблемы вы можете использовать метод get например, в методе form method='get' что он делает, он будет добавлять всю информацию формы в url, которую мы называем query string и в php-коде, к которому вы обращаетесь к значениям формы в $_POST но при использовании метода get значения формы теперь будут отображаться в методе $_GET эти методы называются методом запроса и являются глобальными переменными php. Теперь, когда вы пытаетесь обновить его, вы не будете просить вас повторно отправить информацию, поскольку информация теперь находится в URL

     <form action='thi_very_same_page.php' method='get'> Search for Christian Movies <input type='text' name='query' id='text' /> <input type='submit' name='submit' id='search' value='Search' /> </form> <?php if (isset($_GET['submit'])) { mysql_connect("localhost", "root", "toor") or die("Error connecting to database: " . mysql_error()); mysql_select_db("db_name") or die(mysql_error()); $query = $_GET['query']; $min_length = 2; if (strlen($query) >= $min_length) { $query = htmlspecialchars($query); $query = mysql_real_escape_string($query); echo ""; $result = mysql_query("SELECT *, DATE_FORMAT(lasteditdate, '%m-%d-%Y') AS lasteditdate FROM movies WHERE (`moviename` LIKE '%" . $query . "%') OR (`year` LIKE '%" . $query . "%')") or die(mysql_error()); if (mysql_num_rows($result) > 0) { while ($results = mysql_fetch_array($result)) { echo ""; } } else { echo ""; } } else { echo ""; } } ?> 

    Надеюсь, этого достаточно, чтобы объяснить вам о представлении формы, я предлагаю вам глубоко посмотреть ниже


    Пожалуйста, не используйте функции mysql_* в новом коде . Они больше не поддерживаются и официально устарели . См. Красную рамку ? Узнайте о подготовленных инструкциях и используйте PDO или MySQLi – эта статья поможет вам решить, какой из них. Если вы выберете PDO, вот хороший учебник .