一尘不染

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

html

我认为这个问题经常出现在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>

提交表单后,数据将插入数据库中,并产生消息 “完成操作” 。然后,如果刷新页面,则数据将再次插入数据库。

如何避免这个问题?任何建议将不胜感激:)


阅读 289

收藏
2020-05-10

共1个答案

一尘不染

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

// submit
// set success flash message (you are using a framework, right?)
header('Location: /path/to/record');
exit;
2020-05-10