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

2022-08-30 06:22:45

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

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


答案 1

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

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

此处的概念验证:https://dtbaker.net/files/prevent-post-resubmit.php(链接不再有效)

我仍然会推荐Post/Redirect/Get方法,但这是一个新颖的JS解决方案。


答案 2

使用发布/重定向/获取模式。http://en.wikipedia.org/wiki/Post/Redirect/Get

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


推荐