小编典典

刷新页面时如何防止重新提交表单(F5 / CTRL + R)

html

我有一个简单的表单,可将​​文本提交到SQL表。问题在于,用户提交文本后,他们可以刷新页面,并且无需再次填写表单即可再次提交数据。提交文本后,我可以将用户重定向到另一个页面,但是我希望用户停留在同一页面上。

我记得读过一些有关为每个用户提供唯一的会话ID并将其与另一个值进行比较的信息,这些值解决了我遇到的问题,但我忘记了它在哪里。


阅读 629

收藏
2020-05-10

共2个答案

小编典典

使用发布/重定向/获取模式。

在我的网站上,我将在cookie或会话中存储一条消息,在帖子后重定向,读取cookie/会话,然后清除该会话或cookie变量的值。

2020-05-10
小编典典

我还想指出,您可以使用Javascript方法window.history.replaceState来防止刷新和后退按钮上的重新提交。

<script>
    if ( window.history.replaceState ) {
        window.history.replaceState( null, null, window.location.href );
    }
</script>

我仍然建议使用Post / Redirect / Get方法,但这是一个新颖的JS解决方案。

2020-05-14