当用户点击浏览器的"刷新"按钮时,如何避免重复?

Ste*_*ven 1 html php browser

例如,我问这个问题,然后单击"发布您的问题"并保留在当前页面中.现在我可以点击浏览器的"刷新"按钮来查看新的答案.但我发现在我的网站上,如果点击"刷新"按钮,将发布重复的问题.如何避免这个问题?我正在使用PHP.

Dou*_*ner 6

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才能成功

这会处理他们发布的数据,然后成功时,会重定向回相同的页面.现在唯一的区别是,当他们点击刷新时,不会发布任何信息.

注意只需确保echoheader通话之前没有任何内容.