表单在刷新时重新发送,我读过有关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 "";
}
}
答案 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,并使用PDO或MySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial。