簡體   English   中英

在提交之前通過 Javascript 進行一些表單驗證是否明智?

[英]Is it smart to do some form validation through Javascript before submitting?

我真的很喜歡在服務器端驗證 forms 客戶端之前的想法。 如果客戶端驗證通過,我可以使用 Javascript 提交表單。

但是,我聽說一些專門的瀏覽器,比如視障瀏覽器,不支持 Javascript。 因此,這些用戶將無法提交我的 forms。 因此,我應該避免我剛才想做的事情,還是可以?

編輯:(回應答案):我想我沒有解釋這一點,但除了客戶端之外,我還計划進行服務器端驗證。 對不起!

謝謝

Javascript 是一個很好的驗證方法。 它讓用戶立即知道出了什么問題,此外它還最大限度地減少了對數據庫的潛在調用。

如果有瀏覽器出於可訪問性原因禁用 javascript,您不必太擔心。 這就是服務器端檢查的幫助。

因此,您應該同時使用兩者,並在打開或關閉 javascript 的情況下進行測試。 永遠不要使用 javascript 作為唯一的驗證器 - 你可以在瀏覽器中關閉 javascript 並且 POST 數據將通過 go !

您應該同時進行客戶端驗證和服務器端驗證。 您通過客戶端驗證捕獲的所有內容都是一個改善用戶體驗的機會,並在他們提交表單之前准確告訴他們缺少什么或錯誤什么。 如果由於任何原因未啟用 javascript,您仍將在服務器上進行驗證(正如您一直應該做的那樣),並且如果需要,可以通過服務器的表單響應返回錯誤。

因此,如果可用,使用客戶端驗證總是一個好主意。

客戶端驗證聰明嗎? 是的,干凈的輸入比會出錯的輸入更能提高性能。

偉大的用戶體驗? 是的,用戶獲得快速、相關的反饋很重要。

安全的? 一點都不。 黑客不會使用您的界面來入侵您的網站。

越來越多的瀏覽器可以對運行 JS 進行站點選擇。

最后,如果您擔心平等訪問,最好的辦法是構建網站的可訪問版本。

客戶端驗證通常會改善用戶體驗,因為用戶可以立即看到他的數據是否有效。

如果是一些簡單的驗證,比如模式匹配或密碼長度檢查,一定要這樣做。 但當然它不是服務器端驗證的替代品,無論如何它都不是一種安全手段。 永遠不要相信用戶輸入。

不顯眼的方式集成客戶端驗證,以便在關閉 JS 時表單提交仍然有效。

“兩者兼而有之”就是答案。 驗證客戶端是為了方便和改善用戶體驗,但您應該始終驗證服務器端。

沒有 JavaScript 的瀏覽器根本不會執行 JavaScript,因此它們仍然可以提交您的表單。 不用擔心。

客戶端驗證通過攔截正常的提交事件並根據表單是否有效返回true或false來完成。 這樣,在沒有啟用javascript的情況下,提交不會被攔截,正常進行。

幸運的是,這是最容易優雅降級的事情之一:)

不確定我們是否可以說在提交之前處理表單“控制”是明智的:這“只是”客戶舒適,因為這些控制......從安全角度來看是無效的。 因此,從安全角度來看,這是在增加編碼工作而沒有增加價值。 但這增加了客戶舒適度的努力。 這很聰明。

簡單的方法:根本沒有客戶端控制,只有服務器端。 不需要在客戶端啟用 js。
這是應始終啟用且完全安全有效的點。

中間方式:實現簡單的方式並在頂部添加一些javascript“控件”,“手工編碼”或使用js庫。 這是一種挑剔的方式,因為這是在現有服務器核心代碼之上添加一層,通常意味着一些服務器端代碼更改或重構。 所以在我看來,這是最糟糕的方式。 但這是學習和理解客戶端-服務器交換的好方法。 痛苦但有用。

最好的方法:將所有努力都放在服務器端驗證上,但要確保從編碼起點開始,也能夠嵌入“很高興擁有”,例如。 客戶端不錯的“控件”。 這意味着您必須在開始編寫任何行之前考慮您的代碼架構。 怎么做? 在服務器端使用 Ajax 編碼 forms。 這表明了使用特定 php 表單類的理想編碼方式。 例如, ZendFramework使用 dojo 或 jQuery 提供這種可能性。

將“更清潔”的數據傳遞到服務器總是更好。 防止錯誤和惡意數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM