例如,我问这个问题,然后单击"发布您的问题"并保留在当前页面中.现在我可以点击浏览器的"刷新"按钮来查看新的答案.但我发现在我的网站上,如果点击"刷新"按钮,将发布重复的问题.如何避免这个问题?我正在使用PHP.
在POST请求之后,通常的做法是重定向到同一页面以避免此问题.
让我们说你在 /ask_question.php
您的开头<form>标记可能如下所示:
<form action="/ask_question.php" method="post">
Run Code Online (Sandbox Code Playgroud)
现在,在你/ask_question.php做这样的事情:
if( isset($_POST['new-question'])){
// Do your processing here
// On success:
header('Location: /ask_question.php');
exit(); // End the request
}
Run Code Online (Sandbox Code Playgroud)
更新 仅在$_POST处理有效请求后重定向很重要.我测试一个名为的表单字段,new-question但您应该使用必须存在的任何表单字段名称$_POST才能成功
这会处理他们发布的数据,然后成功时,会重定向回相同的页面.现在唯一的区别是,当他们点击刷新时,不会发布任何信息.
注意只需确保echo在header通话之前没有任何内容.