例如,我問這個問題,然後單擊「發佈您的問題」並保留在當前頁面中。現在我可以點擊瀏覽器的「刷新」按鈕來查看新的答案。但我發現在我的網站上,如果我點擊「刷新」按鈕,將會發佈一個重複的問題。如何避免這個問題? 我正在使用PHP。當用戶點擊瀏覽器的「刷新」按鈕時如何避免重複?
回答
這是POST
請求後通常的做法,重定向到同一頁面以避免此問題。
比方說,你是在/ask_question.php
你開<form>
標籤可能是這樣的:
<form action="/ask_question.php" method="post">
現在,在/ask_question.php
做這樣的事情:
if(isset($_POST['new-question'])){
// Do your processing here
// On success:
header('Location: /ask_question.php');
exit(); // End the request
}
更新僅在重定向後重要已經處理了有效的$_POST
請求。我測試了名爲new-question
表單域,但你應該使用有存在的任何形式的字段名稱爲$_POST
成功
這種處理他們發佈的數據,然後成功,重定向回同一頁。現在唯一的區別是,當他們點擊刷新時,不會發布任何信息。
注意只要確保在header
調用之前沒有任何東西echo
'被刪除。
打我吧。 =) – 2009-12-26 07:50:23
@Alix哈哈。但是,我太冗長了。你的答案要短得多,並且可能更好地傳達答案:) – 2009-12-26 07:52:31
@Doug:詳細程度很好。 =) – 2009-12-26 07:58:06
首先,爲您的表單使用POST。幾乎每個瀏覽器都會要求用戶在刷新POST表單結果時進行確認,因爲它必須重新提交。
其次,在您的表單處理腳本中,檢查問題是否已經存在 - 或爲用戶設置會話並跟蹤他們是否最近提交了一些內容。
但我的瀏覽器(Firefox)不會要求我確認。 – Steven 2009-12-26 08:03:25
然後你的瀏覽器有一個錯誤。這個對我有用。 – 2009-12-26 08:06:53
提交使用POST形式,在提交驗證,如果一切都很好用戶重定向到成功頁面,這樣,如果用戶刷新頁面所有他要做的就是再次看到「謝謝」頁面。
- 1. 當用戶點擊瀏覽器刷新按鈕時重定向到錯誤頁面
- 2. 如何生成警告/彈出窗口,指出在用戶點擊之前避免點擊瀏覽器按鈕
- 3. 當用戶點擊瀏覽器後退按鈕時,如何重新加載當前頁面
- 4. 當按下瀏覽器的刷新按鈕時防止重新插入數據
- 5. 如何在點擊瀏覽器刷新按鈕時彈出警告框?
- 6. 刷新當前頁面當我點擊瀏覽器後退按鈕(鉻)
- 7. 如何避免在點擊瀏覽器後退按鈕後返回?
- 8. 點擊返回按鈕刷新瀏覽器JS
- 9. JavaScript等同於點擊瀏覽器刷新按鈕
- 10. 當用戶點擊瀏覽器後退按鈕(並且頁面未刷新)時,設置新會話變量?
- 11. 當我點擊IE瀏覽器上的刷新按鈕我的JavaScript得到刷新 - 如何阻止它
- 12. 避免瀏覽器復位
- 13. 禁用瀏覽器刷新按鈕
- 14. 避免頁面刷新點擊按鈕Asp.net c#
- 15. 構建按鈕點擊的方法來避免代碼重複
- 16. 當用戶點擊瀏覽器中的後退按鈕時會發生什麼?
- 17. 當用戶點擊刷新/ F5時如何避免從主應用程序重定向到gwt應用程序?
- 18. 如何避免在radgrid上點擊分頁按鈕時重新獲取記錄
- 19. 當用戶點擊瀏覽器中的後退按鈕時重新加載頁面
- 20. 當用戶點擊瀏覽器後退按鈕時觸發事件
- 21. 當用戶點擊瀏覽器後退按鈕時提交表格
- 22. 強制頁面刷新/重載如果後退按鈕用戶點擊瀏覽器
- 23. 如何刷新按鈕上的點擊
- 24. 當我點擊asp圖像按鈕時如何刷新頁面?
- 25. 如何在用戶點擊瀏覽器的後退按鈕/刷新按鈕/關閉按鈕時更新數據庫中的內容?
- 26. Silverlight:如何禁用瀏覽器的刷新按鈕?
- 27. 如何在點擊刷新按鈕時刷新BaseAdapter
- 28. 重新啓動或刷新一個定時器,當按鈕被點擊在android
- 29. 如何在用戶點擊瀏覽器後退按鈕時顯示警報?
- 30. 刷新按鈕的標籤點擊時
如何確定數據是否已提交? – Steven 2009-12-26 07:46:47
stackoverflow.com如何避免/解決此問題? – Steven 2009-12-26 08:04:46