[英]Validating and Sanitizing user input in PHP
是否使用PHP提供的filter_var()
和sanitize_var()
來過濾和清理變量是最佳實踐,還是有更好的選擇?
謝謝。
讓我們嘗試驗證來自表單的輸入。
我們需要做的第一件事是確認我們正在尋找的輸入數據是否存在。
然后,我們使用filter_input()函數過濾輸入數據。
在下面的示例中,輸入變量“ email”被發送到PHP頁面:
我認為最好先使用HTML5進行客戶端驗證,然后再使用服務器端。 PHP具有過濾字符串的功能,例如FILTER_SANITIZE_STRING(盡管您無需驗證),您可以使用FILTER_VALIDATE_EMAIL而不是使用正則表達式手動驗證電子郵件。 您還可以使用限制,例如字符數等等。
概念上的例子...
if form is submitted
if 'name' is not empty
create a variable that equals filter_var($_POST['name'], FILTER_SANITIZE_STRING)
if 'name' is empty then set echo an error message
if 'email is not empty
create a variable that equals filter_var($_POST['email'], FILTER_SANITIZE_STRING)
// then you can validate email
if (!filter_var($email, FILTER_VALIDATE_EMAIL))
error message
// do this for other variables
if there's not error
send email and or a thank you message
//FORM here
我將始終考慮以下原則...“從不信任用戶輸入” ctype_alpha,ctype_alnum也是驗證的良好執行者,並且記住也要驗證客戶端(javascript驗證),這也將有助於減輕服務器負載
我想提到HTML Purifier用於任何HTML過濾/清理。
對於通用驗證(數字,日期和其他值),有很多庫,也有內置函數,您可以選擇最合適的庫,但是如果您已經使用過Zend Framework,我仍然要提及Zend_Validate 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.