我認為這個問題經常發生在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;

qq_花開花謝_0
TA貢獻1835條經驗 獲得超7個贊
我遇到了類似的問題。我需要向用戶顯示POST的結果。我不想使用會話,也不想使用URL中的結果進行重定向(這很安全,我不希望它被意外添加書簽)。我找到了一個非常簡單的解決方案,該解決方案適用于其他答案中提到的情況。
成功提交表單后,請在頁面上添加以下Javascript:
<script>history.pushState({}, "", "")</script>
它將當前URL推送到歷史記錄堆棧。由于這是歷史記錄中的新項目,因此刷新不會重新發布。
- 3 回答
- 0 關注
- 601 瀏覽
相關問題推薦
添加回答
舉報
0/150
提交
取消