我有一个从用户获取输入然后搜索数据库并显示结果的表单。一切正常,除非用户刷新浏览器时出现重新提交的警报。如果我重新提交,我会获得相同的数据,但有没有办法禁用该警报?只刷新并获得相同的结果集。
答案 0 :(得分:1)
有两种解决方法。如果您的表单未对数据进行任何修改或未记录任何人,您可以从POST切换到GET。这具有创建可由用户添加书签的URL的附加优点。
如果您的表单提交导致数据修改,您应该继续使用POST。但是,在修改数据后,您应该将用户重定向到显示结果的页面。
这样的事情
if(isset($_POST['postname'])){
/** modify data here **/
if ($data_changed) {
header("Location: /success/page/");
}
}
这是许多框架中的推荐做法和标准模式。 this website立刻想到了。{/ p>
答案 1 :(得分:0)
you can use isset function
if(isset($_POST['postname'])){
// your submission code
}
答案 2 :(得分:0)
您应该使用PRG (Post/Redirect/Get)概念。
一般的想法是,在POST之后,您将用户重定向到新页面,这样,即使在刷新后 - 表单也不会再次提交。
答案 3 :(得分:0)
您需要重定向,将其添加到脚本的末尾。
header('Location: '.$_SERVER['REQUEST_URI']);
请注意,这需要在输出任何html之前。