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

时间:2009-12-26 07:41:13

标签: php html browser

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

3 个答案:

答案 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表单结果,因为它必须重新提交。

其次,在您的表单处理脚本中,检查问题是否已存在 - 或为用户设置会话并跟踪他们最近是否提交了某些内容。