2011-09-03 28 views
1

我是新來的Zend框架,我有一個問題,用Zend_Form創建一個編輯窗體。Zend form:編輯時安全的方式存儲條目ID?

我的問題是,我需要在編輯過程中存儲條目ID,我已經看到一些使用隱藏表單字段的示例,但隱藏字段可以由用戶操作。

所以:我怎樣才能設置一個表格字段,填充$form->populate($data);,並且在提交請求後可用,但對用戶來說不是以任何方式對用戶可見?

感謝您的幫助!

回答

0

你想隱藏什麼樣的數據? 數據應該在post或get.if你不把你的數據放在你的表單中,那麼你將不得不使用GET比POST更安全。 如果你有一些數據,你不想讓用戶看到這些數據,那麼你不應該把這些數據放在一個表單中。你可以使用表格s submitted values.lets suppose your hidden field is user的密碼來存儲和檢索隱藏數據。你不需要發回密碼回到當客戶端正在編輯表格時,您可以根據用戶提交的名字和姓氏在您的控制器中操作密碼。 如果您仍然堅持,您可能想嘗試使用ZF加密數據並回應您的價值並將加密數據設置爲隱藏的表單元素。

+0

爲什麼IST GET後更安全比獲取表單元素的值取數據?請解釋,謝謝 – opHASnoNAME

3

我不確定試圖隱藏價值是否真的有點意義。

考慮以下幾點:

  • 要顯示正確的編輯形式,你需要的是將編輯的對象的ID。
  • 在允許用戶編輯某個ID之前,您需要檢查用戶是否可以編輯它。

因此,如果你把ID的形式,它應該不是真正的問題:

  • 當您張貼編輯表單,你應該再次檢查,用戶仍然可以編輯ID。
  • 如果用戶更改了隱藏的ID,那並不重要。他們仍然可以通過在網站上查找來編輯其他ID。 (假設您的支票沒有告訴您用戶無權訪問)
0

Zend_Form生成一個HTML表單元素,其中包含您指定的表單元素。所以它的元素能力被縮小爲一個簡單的HTML表單。

隱藏表單元素用於傳遞用戶不應該手動輸入的數據。但正如你自己所說的那樣,它不能被篡改。所以通過使用隱藏表單值不提供安全性。

大多數情況下,您最好使用服務器端值(如存儲在會話中)來引用要從用戶保護的值。

我建議您將ID保留在會話值中,然後您可以在隱藏窗體字段中使用會話密鑰。這樣用戶不能更改目標ID。但是,您無法在一步中使用$ form->填充($ values)。你必須設置與其他步驟目標值:

  1. 從會話
  2. 設置與所取得的數據