2013-10-25 72 views
-2

我想知道表單字段驗證。我一直在通過客戶端腳本進行驗證,比如JavaScript和PHP。如果用戶關閉JavaScript,客戶端驗證將無法正常工作。那麼爲什麼我們要進行服務器端和客戶端驗證。我的意思是不是服務器端驗證是足夠的,而不是使用客戶端驗證。什麼是正確的方式爲html表單輸入字段驗證

我相信的是,正則表達式用於過濾垃圾或無效數據格式,用戶可以意外地或通過他的選擇進入。例如,輸入字段的電子郵件地址,但用戶輸入1233456代替。所以,它是一個垃圾。在與數據庫交互之前,應該驗證數據。

在與數據庫交互之前,我可以使用模型視圖控制器設計模式在控制器內部進行這些驗證。這將是一個好習慣嗎?

如果我錯了,請引導我,讓我正確。謝謝

+1

客戶端驗證表單驗證,並應被視爲不錯的。在向服務器發出請求之前,這是一種通知用戶他/她搞砸了某些東西的方法。 – PeeHaa

+0

並非所有的Web用戶都關閉瀏覽器的JS,只有像黑客這樣的高級用戶試圖進入你的系統並做壞事。客戶端驗證爲您近90%的網站用戶提供了輕鬆快速的響應。所以它最好做JS和服務器端驗證。 –

+1

「只有像黑客這樣的高級用戶試圖進入你的系統並做壞事。」武漢理工大學? – PeeHaa

回答

0

使用JavaScript純粹是一種幫助用戶的方式。這是用戶友好的,因爲在用戶提交數據之前它會被驗證。 由於JavaScript可能被禁用,服務器端驗證應該始終完成,因此服務器端驗證純粹是安全性和輸入校對。

因此,您可以將JavaScript驗證保留在您的應用程序之外,但如果您不這樣做,它確實會使您的應用程序更容易使用。

如果你不喜歡javascript,你也可以使用HTML5驗證器,比如使用「required」屬性:http://www.the-art-of-web.com/html/html5-form-validation/,但就像javascript一樣,它不能確保驗證的發生,因此總是需要服務器端驗證!

+0

感謝您的幫助。 –

0

客戶端驗證是爲了緩解用戶體驗,給他一些反饋,輸入工具提示等等。我總是做服務器端,比我添加Ajax,因此頁面不重新加載,用戶得到快速反饋。如果JS關閉,服務器端仍然可以繼續工作,而無需再次觸摸代碼。

0

你說得對。在數據庫查詢之前,主要驗證必須位於服務器代碼中。也可以在客戶端進行驗證,以便驗證速度更快並且不發送服務器請求。

+0

非常感謝你@Manolo Salsas –

2

不,這是不夠的。表單提交後,您應始終在服務器端驗證您的數據。提交表單之前的客戶端驗證和AJAX驗證僅通過提供有關無效數據的更快反饋來增強用戶體驗。客戶端驗證和AJAX預先提交驗證都不會,也無法保護您免受惡意製作的表單提交。攻擊者和濫用者通常甚至不使用瀏覽器來向服務器提交數據。

0

是的,是完全正確的兩側有沒有好處:

服務器端驗證:始終必須存在,該客戶端是容易斷裂,而且你不想在你的數據庫有壞的數據。

客戶端驗證:可選,但很好。主要用於不接受客戶端對服務器的無關緊要的請求。客戶不喜歡提出要求,也不會強調壓力。

對於客戶端驗證最好的插件是http://jqueryvalidation.org/工作正常文檔不是滿的,但有一個良好的社區使用。

對於服務器端驗證,取決於框架您使用的Symfony 2,在組件

+0

非常感謝你@Jesus Quintana –

相關問題