一、數據過濾和驗證的意義
在開發web應用程序過程中,為了確保用戶輸入的數據的有效性和安全性,我們需要對用戶輸入的數據進行過濾和驗證。數據過濾和驗證可以避免輸入錯誤或者惡意注入帶來的風險,美化用戶體驗並保證數據的準確性。
為了更加高效、易用、可維護的完成數據過濾和驗證工作,在PHP7.0之後,Php新增了一個filter_var_array函數,可以同時校驗多個輸入的變量,減少了代碼量以及結構的複雜性,並且實現了數據的自動過濾和校驗,提供了更加簡單、直接的數據驗證。下面我們將介紹如何使用filter_var_array函數實現數據過濾和驗證。
二、filter_var_array函數的基本使用
首先我們需要了解以下兩個函數:
- filter_var:對變量進行過濾和驗證,第一個參數是待驗證的變量,第二個參數是驗證規則,第三個參數是附加的過濾選項。會返回過濾後的變量值或者false。
- filter_input_array:也是對同一個變量進行過濾和驗證,只是需要傳入三個參數,第一個參數是過濾類型,第二個參數是變量名,第三個參數是附加的過濾選項數組。
了解以上兩個函數後,我們就可以使用filter_var_array對多個變量進行驗證和過濾了。filter_var_array的基本使用如下:
$filtered = filter_var_array($data, $filters);
其中,$data為待過濾驗證的變量數組,$filters為數組格式的驗證規則,用於指定不同變量需要的驗證規則。$filtered即為最後得到的過濾後的變量。
三、使用filter_var_array進行變量驗證和過濾
接下來,我們通過一個例子來實際演示如何使用filter_var_array進行變量驗證和過濾。
例如,我們需要驗證並過濾一個用戶提交的表單數據,其中包括“用戶名”、“密碼”、“郵箱”等信息字段:
<form method="post"> User name: <input type="text" name="username" /><br> Password: <input type="password" name="password" /><br> Email: <input type="text" name="email" /><br> <input type="submit" name="submit" value="Submit" /> </form>
我們要對這些字段進行驗證和過濾,可以使用以下代碼:
$data = [ 'username' => $_POST['username'], 'password' => $_POST['password'], 'email' => $_POST['email'] ]; $filters = [ 'username' => [ 'filter' => FILTER_SANITIZE_STRING, 'flags' => FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH ], 'password' => [ 'filter' => FILTER_SANITIZE_STRING, 'flags' => FILTER_FLAG_STRIP_LOW ], 'email' => FILTER_VALIDATE_EMAIL ]; $filtered = filter_var_array($data, $filters);
對比上面代碼,可以看到我們設置了不同的驗證規則:密碼和用戶名通過FILTER_SANITIZE_STRING進行過濾,且用戶名必須被標準化為字符串並去掉低位的控制字符和高位字符,而密碼則只需去掉低位的控制字符。郵箱字段則使用FILTER_VALIDATE_EMAIL進行單個變量的驗證,如果是合法的郵件地址則通過驗證,否則返回false。
四、自定義驗證規則
除了上面的基本驗證規則,我們也可以自定義驗證規則。我們可以自定義驗證規則,然後使用$filters數組中的“callback函數”來指定自定義過濾器的名稱。例如,我們定義一個“check_name”函數來驗證一個用戶名的長度,代碼如下:
function check_name($name) { return (strlen($name) >= 6 && strlen($name) <= 20); } $data = ['name' => 'foo']; $filters = [ 'name' => ['callback' => 'check_name'] ]; $filtered = filter_var_array($data, $filters); if ($filtered) { echo 'The name passed the check.'; } else { echo 'The name failed the check.'; }
上面的代碼演示了如何自定義一個驗證規則來判斷用戶名的長度,如果長度在6-20之間則通過驗證,否則不通過驗證。
五、小結
數據驗證和過濾是web開發中非常重要的一個方面,使用PHP Filter提供的filter_var和filter_input_array函數可以實現對數據的自動過濾和校驗,提供了更高效、可靠、易用的驗證方式。
在實際開發中,我們應該根據情況靈活使用不同的過濾和校驗規則,對常用的數據類型和數據格式進行校驗和驗證,從而保證數據的安全有效性。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/192776.html