2014-01-10 86 views
0

我已經構建了一個表單,除了根據表單元素值構建一個url來「重定向」用戶以外,別的什麼都不做。我可以通過PHP中的header()方法設置請求方法嗎?

該表格包含來自包含各個城市的國家和城市的分類法的值。

所以當用戶選擇一個國家的形式建立網址,發送用戶到相應的頁面,顯示該國家的所有記錄。如果用戶選擇了城市字段,則表單將建立將用戶發送到顯示該國>城市記錄的相應頁面的url。

它使用「post」作爲方法的形式。

所有的作品都很好,直到這裏!

問題出在用戶嘗試刷新結果頁面或嘗試使用後續頁面的後退按鈕。

爲了解決這個問題,我嘗試在將表單提交給相同表單後重定向用戶,但是我擔心無盡的重定向。爲此,我想知道是否可以通過header()函數修改請求方法。

這可以幫助我檢查$_SERVER[REQUEST_METHOD]如果它被設置爲POST,那麼做,重定向。

+2

的'頭文件()'函數設置__response__頭,不__request__頭 –

+0

作品!你是對的 !! ( –

回答

4

如果你read up on HTTP headers,你會知道header("Location: ...")設置一個狀態代碼,明確導致瀏覽器使用GET請求,而不是使用任何方法。

實際上,如果要強制瀏覽器使用相同方法重新發送請求,則必須手動設置狀態碼308。

所以,不要擔心:)

+0

)另外,你應該在'header('Location:...')之後立即死掉()'或'exit()'; – Popnoodles

+0

@phihag你能否提供一些代碼來顯示如何手動設置狀態碼308? – jkushner

+0

@jkushner這個問題涉及到切換到GET。如果你想發送一個308,不知道如何在PHP中做到這一點,爲什麼你不[請問一個新的問題](http:///stackoverflow.com/questions/ask)。這樣,未來的搜索者將會發現你的問題,並從中受益。如果你願意,你可以用新問題的URL給我留言。 – phihag

相關問題