2012-01-16 37 views
1

當我刷新php頁面時,有沒有辦法避免重新處理表單?我想在刷新帶有插入功能的php文件鏈接時阻止重新發送表單。例如,我正在處理每個頁面頂部的用戶編寫的一系列筆記以獲取新筆記。除了顯而易見的創建一個帶有頭文件功能的單獨的PHP文件之外,還有另一種方法可以實現它嗎避免重新發送php頁面上的表格

回答

14

使用Post-Redirect-Get Pattern

  1. 接受POST請求
  2. 處理數據
  3. 問題重定向響應
  4. 接受Get請求
  5. 發行200響應

如果你需要顯示的數據提交的內容,然後在您重定向到的URL的查詢字符串中包含行ID或類似內容。

+0

啊每天學點新東西:) – 2012-01-16 16:18:26

+0

接受獲取請求併發出200響應是什麼意思? – 2012-01-16 16:33:49

+0

瀏覽器發出一個請求,其中包含「GET/url/you/redirected/to HTTP/1.1」,服務器以「HTTP/1.1 200 OK」,一些其他標題和一些內容作爲響應。 – Quentin 2012-01-16 16:36:01

1

最好的方法是在處理表單後執行header("location: form.php");調用。這會將您重定向回表單頁面,如果刷新,瀏覽器將不會重新發送表單數據。

或者,你可以檢查你是否已經處理了收到的數據,但是仍然會給你瀏覽器警告消息,你將重新發送數據。

你可能會這樣做,以防萬一有人使用後退按鈕並意外再次點擊提交。

1

剛剛設置一些標誌,當您第一次處理表單時,您可以檢查它並稍後中止重新處理。會話變量或cookie會正常工作。

1

您可以將一個隨機數放入僅允許使用一次的頁面中,這樣如果您看到相同的隨機數進入,則不要插入頁面。

1

我在處理表單後將用戶重定向到新頁面。

該表格是一個POST請求do-something.php。我檢查輸入數據,如果它驗證我處理數據並執行重定向到do-something.php?somethingdone。因此,用戶可以按F5鍵重新發送POST請求。

相關問題