我需要在php中驗證表單並在視圖中顯示一些錯誤消息,如果有驗證錯誤。問題是,一旦表單被提交,發送用戶回到頁面將清除所有完成的表單域。有沒有一種簡單的方法不失去未驗證的表單數據?保存表單數據POST提交時未驗證
我能想出的唯一解決方案是對$_POST
變量進行逆向工程,但我想要一個更優雅的方式來實現它。
我需要在php中驗證表單並在視圖中顯示一些錯誤消息,如果有驗證錯誤。問題是,一旦表單被提交,發送用戶回到頁面將清除所有完成的表單域。有沒有一種簡單的方法不失去未驗證的表單數據?保存表單數據POST提交時未驗證
我能想出的唯一解決方案是對$_POST
變量進行逆向工程,但我想要一個更優雅的方式來實現它。
不要將用戶發送到任何地方,而是要將表單正確地重新呈現,並用輸入的值預填充表單。這將是最常見的方法。
第二種方法是將值存儲在session variables中,但是如果項目結構不允許使用第一種方法,那應該是最後的手段。
在客戶端進行驗證。
如果您必須在服務器端進行驗證,請使用要驗證的元素向服務器發送ajax調用(以便您不必刷新頁面)。進行所需的驗證並將答案返回給頁面(有效或無效)。
如果答案有效,您可以繼續(注意:如果您需要進行的所有元素都是經過驗證的,您可能無需在驗證後返回頁面)。
如果無效,答案應該返回無效元素(可能還有每個錯誤消息),以便您可以顯示所需的錯誤消息。
如果在用於準備表單的php代碼中,您總是將字段值設置爲存在於$ _POST數組中的任何值,那麼在驗證代碼中,您可以有條件地包含該表單文件,並使用用戶值來呈現自身。當您第一次渲染表單(空表單)時,$ _POST不會包含具有字段名稱的元素,並且表單將爲空。
客戶端驗證通常是不夠的。 JavaScript可能被關閉。另外,如果沒有服務器端驗證,有害數據可能會進入系統。 – 2010-08-26 00:50:49
客戶端驗證非常不安全,我需要檢查服務器端的惡意數據,就像Pekka說的那樣,用戶可以關閉JS,或者他們可能擺弄視圖以繞過安全檢查。 – Cat 2010-09-18 20:14:42