我想知道是否有一種方法可以在刷新時停止重新發送html窗體的頁面。從刷新重新發送窗體停止頁面
回答
您可以將Location
標題發送到正在處理表單輸入的腳本中的其他URL。這個新的URL將可用於瀏覽器而無需發送表單數據。
我用這個。非常感謝。在處理完想要發生的事情之後,我剛剛重定向了同一頁面。 – Darren 2011-12-29 21:39:27
我不認爲有這樣做的好方法。我們過去完成這項工作的方式是在日期和日期之間設置一個最短時間last_modified
。如果你還沒有等一個小時就說,這個帖子會被拒絕。
停止一個你無法控制的客戶端(瀏覽器)從做一些事情是不可能的。然而,有可能 - 對你來說很容易 - 硬化您的應用程序在此:
- 當你表現形式,創建一個隨機令牌,將其存儲在會話中,並將其添加到窗體作爲隱藏現場
- 當您收到填好的表格,檢查令牌對會話,如果它不匹配忽略的數據,如果它不匹配清除會話令牌和處理數據
任何標題或其他技巧可能會或可能不適用於瀏覽器和人們刷新沒有MALICE,但他們definitly不會幫助攻擊者。
我知道的唯一訣竅就是讓表單提交返回一個帶有鏈接的頁面,您可以通過javascript(元刷新,無論什麼)單擊鏈接到第三頁。
這個想法是當你打F5時最終刷新的東西是鏈接頁面而不是表單提交頁面。
使用郵政/重定向/獲取:http://en.wikipedia.org/wiki/Post/Redirect/Get
在PHP程序以代碼的形式,那麼不輸出任何東西把這個header('Location: http://www.example.com/foo.php');
(顯然替換URL),做另一個頁面上的顯示。如果你需要傳遞任何東西到該頁面,然後使用查詢字符串和$_GET[]
在我尋求解決這個問題,我一直採取一些不同的方法。在自行開發的MVC環境中,我重定向了兩次頁面。確保數據被提交到數據庫後,我把它重定向到
header("Location: http:// .... /redirect/blogcomment
這會打電話給我的「重定向」類和「blogcomment」的方法。在這裏,它會再次被重定向到「引用者」。
public function blogcomment() {
$ref = $_SERVER['HTTP_REFERER'];
$page = "Location: " . $ref . "#commentform";
header($page);
}
這將清除POST陣列和通過只是在表單字段的前面添加一個錨定標記,我跳轉回該位置。當然,我也可以自定義我的重定向。到目前爲止,它的功能就像一個魅力
雙重負載...即將頁面重定向回自己是不好的做法。嘗試調試一個這樣做的應用程序,這使得更難以意識到正在發生。對於上帝之人的愛,如果你需要php提交一個表單,先將它發送給一個單獨的腳本,然後返回,如果你想再次刪除發送表單的刷新,則更容易調試!
嘗試做:
unset($_POST);
爲最後一個命令。
- 1. 從提交刷新停止窗體
- 2. 防止窗體刷新頁面
- 3. 停止刷新頁面
- 4. 如何在刷新頁面時停止重新提交頁面?
- 5. 發送刷新頁面
- 6. 停止發送沒有頁面刷新的Ajax請求
- 7. 窗體重置不會在頁面auot刷新後發生
- 8. 停止重新提交頁面時刷新數據,php
- 9. 停止Servlet響應發送參數回頁面並強制頁面刷新
- 10. 停止表單刷新頁面提交
- 11. 如何停止頁面的刷新?
- 12. 停止頁面刷新某些值?
- 13. 停止刷新不響應頁面
- 14. 停止頁面時,DIV刷新
- 15. 停止自動頁面刷新
- 16. 如何停止刷新頁面
- 17. 停止刷新頁面點擊
- 18. 啓動/停止腳本刷新頁面
- 19. 停止刷新頁面按鈕單擊
- 20. 如何停止刷新頁面上的事件刷新
- 21. 如何在刷新頁面時禁止重新發布 - ASP.NET MVC
- 22. 避免重新發送頁面刷新數據
- 23. 刷新頁面,無需重新發送POST數據(ASP.NET)
- 24. 硒刷新頁面和重新發送數據
- 25. 從彈出窗口重新加載/刷新頁面
- 26. 通過jquery加載遠程窗體後停止刷新頁面ajax
- 27. 阻止刷新頁面發射功能
- 28. 發送刷新請求至頁面
- 29. 在頁面刷新停止html輸入字段重置
- 30. 防止Javascript頁面刷新
我認爲這是不可能的......但我不確定 – 2011-12-29 21:25:12