2011-01-22 39 views
0

我只是想弄清楚奠定了架構的正確方式爲我的形式滿足下列要求:如何在開發表單時組織我的代碼以滿足以下要求?

  1. 該表格必須有服務器端驗證。
  2. 如果用戶填寫上domain.com/register一種形式,形式不通過服務器端驗證,他們應該被帶回錯誤顯示給domain.com/register。
  3. (從點#續2)如果用戶被帶回domain.com/register修復驗證錯誤,他們已經進入到輸入端的數據應自動顯示。
  4. 如果用戶在表單頁面上點擊後退或前進,瀏覽器不應該拋出「確認表單重新提交」警告。

我對錶單提交應該發佈到哪裏感到困惑。應該將domain.com/register上的表單發佈到簡單處理驗證的其他頁面上?如果是這樣,我如何將驗證錯誤和輸入數據傳回domain.com/register?

或者,如果形式張貼到自己?如果是這樣,當點擊後退或前進按鈕時,如何防止瀏覽器拋出「確認表單重新提交」警告?

+0

你有沒有考慮過使用框架? [Codeigniter](http://codeigniter.com/user_guide/libraries/form_validation.html)確實(幾乎)你想要/要求的一切。 – ifaour 2011-01-22 18:29:41

+0

對於第一個要求:http://stackoverflow.com/questions/4709555/form-security-discussion – Eray 2011-01-22 18:29:54

回答

0

接近此的一種合乎邏輯的方式(試圖保持所有相關項目儘可能地本地化)將是使用在頂部附近具有「模式」switch statement的單個頁面,其中具有「更新」包含您的驗證碼。

在形式,你只需發佈到你是在同一個頁面,但你會在所謂的「模式」與「更新」的值表單中添加一個隱藏字段。因此,當提交表單時,執行將流入switch語句的「更新」情況,並且您可以執行所需的驗證。

如果驗證成功,您通常會前進到另一個頁面(通過使用header('Location: ...');,然後是exit();),並且如果驗證失敗,執行將簡單地繼續到頁面,此時應輸出發生的錯誤在驗證期間。