2014-10-16 73 views
0

在基於CRUD的基於PHP的Web應用程序中,需要功能來更新服務器上數據庫中的給定記錄。可以從記錄列表中調用更新頁面,並且要更改的記錄的ID必須傳遞到此頁面。GET或POST記錄以更新

在這種情況下哪種GET或POST會被認爲是最佳實踐? GET顯然允許用戶比POST更容易地更改值,所以適當檢查記錄的存在和所有權將是重要的。另一方面,POST可能會讓用戶在刷新或導航時與後退/前進按鈕混淆,要求在他們不知道提交任何數據時確認重新提交。

+1

如果您正在更新或插入數據庫,請使用POST。如果您選擇(導航,搜索等)使用GET。 – AnchovyLegend 2014-10-16 12:39:19

+0

這是更新記錄之前的一個步驟 - 它將記錄標識傳遞給表單。表單顯然會使用post來發送更改到服務器,但是post也最適合將id傳遞給編輯表單? – Smithy 2014-10-16 12:44:25

+1

是的,帖子應該用於與更新,插入,刪除有關的任何事情。 – AnchovyLegend 2014-10-16 12:46:08

回答

1

在這種情況下哪種GET或POST會被認爲是最佳實踐?

POST。您正在發送數據以更新服務器上的內容。這是POST的目的。

GET顯然允許用戶更改值比POST

這是「小事」和「非常瑣碎」的區別輕鬆了許多。不要讓與用戶改變請求能力有關的任何事情影響您選擇請求方法的決定。

在另一方面POST可能混淆對刷新或導航用戶提供前進/後退按鈕要求重新提交

的確認爲了避免這種情況,使用POST/Redirect/GET pattern

使用POST請求來處理更新。發送重定向到瀏覽器。然後瀏覽器將獲取更新數據的頁面。

當他們不知道任何數據被提交。

這似乎是一個奇怪的用例,您希望用戶更新記錄而不意識到它。

+0

非常有幫助 - 謝謝。我不想讓用戶更新記錄,但並未意識到 - 我指的是將一個id傳遞給一個表單,然後該表單允許用戶更新傳遞給它的id的記錄。 – Smithy 2014-10-16 13:19:54

1

如果你不想隨機的人改變隨機值(改變url中的值),你應該使用後。迄今爲止,我會這樣做,我會使用POST進行所有數據庫事務(更新,刪除),因爲這樣更安全。 大多數瀏覽器在帖子完成後都會發出警告(=重新提交表單/ ...)。

0
  • 當某人從您的 應用程序請求數據時,您應該使用$ _GET。
  • 當有人推送(插入或更新;或刪除)數據到您的應用程序時,您應該使用$ _POST。

您可以使用$ _REQUEST以及包含有關使用$ _COOKIES獲取和發佈的信息。

但是,如果您不使用cookies,那麼我建議您使用$ _POST而不是$ _COOKIES。

0

我通常使用GET進行報告和POST更新。

如果希望用戶快速訪問某些內容並記住用戶可以手動更改參數,請使用GET。

如果您不希望用戶查看或更改參數並在重新發送表單上提醒用戶,請使用POST。

您可以使用帶有重定向結果的POST,它會阻止重傳。

+0

您能解釋一下重定向結果的含義嗎? – Smithy 2014-10-16 13:15:10

+0

POST頁面的結果是重定向到另一個頁面,我通常使用referer頁面。例如: 2017-02-28 17:52:16