2013-03-18 35 views
-1

用PHP驗證表單最好和最安全的方式是什麼?例如:長度,電子郵件,空白,特殊字符等。良好和安全的表單驗證

使用filter_var是否安全?或者我應該手動將它們全部定義在一個函數中。或者還有其他方法。

對不起,我只是想確認一下,因爲我在構建表單時遇到了很多次這個問題。

回答

1

驗證應在客戶端和服務器端進行。客戶端驗證使您的服務器端腳本遇到較少(或可能沒有)錯誤。這是可取的,因爲通常你不喜歡在服務器端獲得太多的錯誤。

這就是說,有很多方法可以驗證您的輸入與PHP。這取決於上下文。例如,檢查空格(就像你自己說的那樣),或者某些輸入是否是數字,檢查給定值的長度(例如最小長度可能適用),或者電子郵件地址是否真的是電子郵件地址! filter_var()可能並不總是足夠的。

+0

爲了跟進:客戶端/服務器驗證肯定有正確和錯誤的方法。在JavaScript中複製所有的PHP驗證代碼是一種錯誤的方式。我參與了很多項目,其中客戶端驗證與服務器端不同步。說實話,迄今爲止我所見過的最好的解決方案(並不意味着沒有更好的解決方案)是服務器上的虛擬控制器,它使用任意形式的數據,並通過AJAX對照一組規則進行驗證。這是一個非常快速的電話(<10毫秒),最重要的是,準確。 – 2013-03-18 13:27:43

+1

你可以在這裏分享控制器嗎?值得檢查它是否也適用於我的項目。 – mavili 2013-03-18 13:33:07

1

您可以在服務器端使用正則表達式。但我會考慮使用JavaScript來驗證客戶端的表單域。你不想從服務器獲取信息,只是爲了檢查字段是否正常,它將消耗無用的服務器時間。

+0

如果我將使用JavaScript驗證它們,我還應該在服務器端使用正則表達式嗎?或者這是沒有必要的。因爲像Ergin Keles說客戶端可以被訪問者改變。 – 2013-03-18 13:48:17

+0

可以說,侵入您網站的訪問者數量非常少,但自然最好雙方進行驗證來解決這些不幸。此外,請檢查表單驗證W3(http://www.w3schools.com/js/js_form_validation.asp)和JS表單驗證的正則表達式(http://www.9lessons.info/2009/03/perfect-javascript -form-validation.html),你應該沒問題! – 2013-03-18 13:53:07

1

我認爲最好的驗證過程是用正則表達式驗證數據。您可以定義需要多少個字符(至少或最多),允許或不允許哪些字符,甚至可以定義數據的確切格式。

驗證必須在雙方進行。服務器端和客戶端。你在客戶端進行驗證,並緩解服務器端的工作。即使你做了驗證客戶端,有惡意的人也可以破解你的代碼。服務器端也必須有驗證。

filter_var函數也很有用。我用它來驗證電子郵件地址。