参见英文答案 >
Avoid resending forms on php pages 6个
我有一个网页,其中包含一个使用POST方法的表单,并引用它所提交的相同页面.我正在使用PHP包含文件,该文件包含在设置提交值时运行的if语句.但是出于某种原因,在一次提交之后,每次刷新页面时,它都会使用先前提交的数据提交表单(浏览器会在刷新页面之前发出警告).是什么导致这种情况,我可能做错了什么? 最佳答案 这是预料之中的.您应该将表单提交给具有唯一URL的处理程序,无论它是查询字符串还是不同的URI.一个解决方案(很多)将改变您的表单操作:
<form action="?action=submit" method="post">
<input type="hidden" name="action" value="submit" />
...
然后在PHP脚本中处理表单,然后将上下文更改回没有隐藏查询字符串的URL
if (!empty($_POST['action']) && $_POST['action'] == 'submit') {
// do stuff
header('Location: '.$_SERVER['SCRIPT_NAME']);
die();
}
请注意,查询字符串实际上并不存在于$_POST中,但我们将其保留在那里,因此浏览器不会将其视为重定向循环.