当我刷新php页面时,有没有办法避免重新处理表单?我想在刷新带有插入功能的php文件的链接时阻止重新发送表单。例如,我正在处理用户在每页顶部写的一系列笔记,以获得新笔记。除了明显创建一个带头文件功能的单独的php文件之外还有另一种方法吗?
答案 0 :(得分:15)
如果您需要显示已提交内容的数据,请在(例如)您重定向到的网址的查询字符串中包含行ID或类似内容。
答案 1 :(得分:1)
最好的方法是在处理表单后进行header("location: form.php");
调用。这会将您重定向回到表单页面,如果刷新,浏览器将不会重新发送表单数据。
或者,您可以检查您是否已经处理了收到的数据,但这仍然会向您发出浏览器警告消息,表明您将重新发送数据。
您可以同时执行这两项操作,以防有人使用后退按钮并意外地再次单击“提交”。
答案 2 :(得分:1)
在第一次处理表单时设置一些标志,以便您可以检查它并稍后中止重新处理。会话变量或cookie可以正常工作。
答案 3 :(得分:1)
您可以将一个随机数放入只允许使用一次的页面中,这样如果您看到相同的随机数,则不要插入页面。
答案 4 :(得分:1)
我在处理完表单后将用户重定向到新页面。
表单是对do-something.php
的POST请求。我检查输入数据,如果它有效,我处理数据并执行重定向到do-something.php?somethingdone
。因此,用户可以按F5重新发送POST请求。
答案 5 :(得分:-1)
我尝试使用header(“ Location:...”),$_POST = array(), unset($_POST)
,但(为什么)他们在我的php页面中不起作用。
所以,我所做的只是使用
echo '< script>window.location.replace("http://.../this.php")</script>'
它的效果非常好!也许这不是一个好主意,我已经在第四周学习PHP。