为了账号安全,请及时绑定邮箱和手机立即绑定

刷新页面以避免提交的最佳方法

刷新页面以避免提交的最佳方法

Cats萌萌 2019-10-30 14:36:27
我认为这个问题经常发生在Web应用程序开发中。但是,我将尝试详细解释我的问题。我想知道如何更正此行为,例如,当我有如下代码块时:<?    if (isset($_POST['name'])) {        ... operation on database, like to insert $_POST['name'] in a table ...        echo "Operation Done";        die();    }?><form action='page.php' method='post' name="myForm">    <input type="text" maxlength="50" name="name" class="input400" />    <input type="submit" name="Submit" /></form>提交表单后,数据将插入数据库中,并生成消息“完成操作”。然后,如果刷新页面,则数据将再次插入数据库。如何避免这个问题?任何建议将不胜感激:)
查看完整描述

3 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

创建动作后不要显示响应;操作完成后重定向到另一个页面。如果有人刷新,则他们刷新的是您重定向到的GET请求页面。


// submit

// set success flash message (you are using a framework, right?)

header('Location: /path/to/record');

exit;


查看完整回答
反对 回复 2019-10-30
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

我遇到了类似的问题。我需要向用户显示POST的结果。我不想使用会话,也不想使用URL中的结果进行重定向(这很安全,我不希望它被意外添加书签)。我找到了一个非常简单的解决方案,该解决方案适用于其他答案中提到的情况。


成功提交表单后,请在页面上添加以下Javascript:


<script>history.pushState({}, "", "")</script>

它将当前URL推送到历史记录堆栈。由于这是历史记录中的新项目,因此刷新不会重新发布。


查看完整回答
反对 回复 2019-10-30
  • 3 回答
  • 0 关注
  • 573 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信