例如,我问这个问题,然后点击“发布你的问题”并留在当前页面。现在我可以点击浏览器的“刷新”按钮来查看新的答案。但我发现在我的网站上,如果点击“刷新”按钮,将发布重复的问题。如何避免这个问题? 我正在使用PHP。
答案 0 :(得分:6)
在POST
请求之后,通常会重定向到同一页面以避免此问题。
让我们说你在/ask_question.php
您的开场<form>
标记可能如下所示:
<form action="/ask_question.php" method="post">
现在,在你的/ask_question.php
做类似的事情:
if( isset($_POST['new-question'])){
// Do your processing here
// On success:
header('Location: /ask_question.php');
exit(); // End the request
}
更新 仅在处理完有效$_POST
请求后重定向非常重要。我测试了一个名为new-question
的表单字段,但您应该使用必须存在的任何表单字段名称才能使$_POST
成功
这会处理他们发布的数据,然后在成功时重定向回同一页面。现在唯一的区别是,当他们点击刷新时,不会发布任何信息。
注意只需确保echo
来电之前没有任何内容header
被删除。
答案 1 :(得分:1)
提交表单时使用POST,提交验证后如果一切正常将用户重定向到成功页面,那么如果用户刷新页面,那么他将要做的就是看到“谢谢”你再次“翻页。”
答案 2 :(得分:0)
首先,为表单使用POST。几乎每个浏览器都会要求用户确认何时刷新POST表单结果,因为它必须重新提交。
其次,在您的表单处理脚本中,检查问题是否已存在 - 或为用户设置会话并跟踪他们最近是否提交了某些内容。