表单在刷新时重置

时间:2013-08-11 10:20:26

标签: php mysql forms page-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 "";
    }
}

2 个答案:

答案 0 :(得分:0)

如果您的意思是在刷新时再次提交表单数据,请检查此方法

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

您将标题设置为标题('HTTP / 1.1 303 See Other');

数据不会被缓存,所以当页面刷新时,表单数据不会再次提交!

答案 1 :(得分:0)

问题是您使用post方法提交表单值,因此当您尝试刷新浏览器询问您是否发送表单信息时,它是浏览器要解决的默认行为发布的信息,您问题的替代解决方案是,您可以使用get方法,例如表单属性method='get'它会做什么,它将在URL中附加表单的所有信息,我们称之为{{ 1}}并且在PHP代码中您正在访问query string中的表单值,但是当使用get方法时,表单值现在将出现在$_POST方法中,这些方法称为请求方法,并且是PHP的全局变量,现在,当您尝试刷新时,它不会要求您重新发送信息,因为信息现在位于URL

$_GET

希望这足以向你解释表单提交的一件事,我建议你深入了解下面


  

Please, don't use mysql_* functions in new code。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDOMySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial