在WordPress主題開發(fā)過程中、涉及到處理用戶提交內容的時候,為確保安全和數(shù)據(jù)的正確性,在吧數(shù)據(jù)保存到數(shù)據(jù)庫之前、一定要對用戶提交的內容進行驗證,這些驗證包括必填項、數(shù)據(jù)格式等驗證,即使我們已經(jīng)通過 JavaScript 在前端驗證過這些數(shù)據(jù)了。今天為大家介紹的是 PHP 語言中最流行的后端數(shù)據(jù)驗證庫 Valitron。Valitron 是一個簡單、小巧、優(yōu)雅的 PHP 獨立驗證庫、不依賴任何其他庫,該庫使用簡單之間的驗證方法對用戶提交的數(shù)據(jù)進行驗證。Valitron 的使用方法也非常簡單命令,下面我們來詳細了解一下這個庫。

安裝 Valitrion 驗證庫
和其他流行的 PHP 庫一樣,我們可以直接通過 Composer 安裝和升級 Valitron 驗證庫。
php composer.phar require vlucas/valitron
使用 Valitrion 驗證庫進行數(shù)據(jù)驗證
我們可以使用 Valitron 驗證指定的數(shù)據(jù),如下示例,我們在實例化 Validator 類的時候,給 Validator 類傳入一個數(shù)組,該數(shù)組就是我們需要驗證的數(shù)據(jù)。然后通過 $v->rule('required', 'name'); 添加驗證規(guī)則,如果驗證失敗,我們可以通過$v->errors()方法得到驗證失敗的消息。
$v = new Valitron\Validator( array('name' => '來呀,來驗證我呀,肯定會通過驗證的。') );
$v->rule('required', 'name');
if($v->validate()) {
echo "早告訴你了,肯定會驗證通過的。";
} else {
// 打印錯誤
print_r($v->errors());
}
通過下面示例中的方法,我們可以直接驗證表單提交的 $_POST 數(shù)據(jù),對于相同的的驗證規(guī)則、我們甚至可以把這些數(shù)據(jù)直接放到一個數(shù)組里面。如下示例中、在第一行中:我們直接把 PHP 超級變量 $_POST 傳給了驗證類;然后在第二行中:然后設置了第一個驗證規(guī)則,來驗證 name 和 email 為必填項;然后在第三行中:添加了驗證 email 必須為電子郵件地址的驗證規(guī)則。在這些驗證規(guī)則中,’name’ 和 ’email’ 為表單字段的 name 屬性。
$v = new Valitron\Validator($_POST);
$v->rule('required', ['name', 'email']);
$v->rule('email', 'email');
if($v->validate()) {
echo "驗證通過不通過,要看用戶是否填寫了姓名和電子郵件。";
} else {
// 打印錯誤
print_r($v->errors());
}
內置驗證規(guī)則
Valitron 內置了豐富全面的驗證規(guī)則,基本上能符合我們開發(fā) WordPress 應用的需求,看完一下的驗證規(guī)則,你會覺得Valitron管的太寬了。如果下面的驗證規(guī)則不符合要求,我們還可以自定義驗證規(guī)則。
- required – 必須字段
- equals – 相等字段、一個字段必須和另外一個字段的值相等(經(jīng)常用于密碼驗證)
- different – 一個字段的值必須和另外一個字段的不同
- accepted – 選擇框或單選框必須被選中(常用于接受使用條款)
- numeric – 必須是數(shù)字
- integer – 必須是證書
- array – 必須是數(shù)組(可以用來驗證多選項)
- length – 字符數(shù)必須是指定值(比如驗證手機號碼必須是11位的)
- lengthBetween – 自負數(shù)必須介于指定的兩個數(shù)字之間
- lengthMin – 最小字符數(shù)
- lengthMax – 最大自負數(shù)
- min – 數(shù)字最小不能小于指定值
- max – 數(shù)字最大不能大于指定值
- in – 必須是指定數(shù)組中的一項
- notIn – 必須不是指定數(shù)組中的一項
- ip – 必須是正確的IP 地址
- email – 必須是正確的電子郵件地址
- url – 必須是正確的 URL 地址
- urlActive – 必須是可以訪問的 URL 地址(可以用來驗證用戶提交的網(wǎng)址是否可以訪問)
- alpha – 必須是英文字符
- alphaNum – 必須是英文或數(shù)字
- slug – 必須是 URL 別名字符串 (a-z, 0-9, -, _)
- regex – 必須符合置頂?shù)恼齽t表達式(可以用來實現(xiàn)各種各樣的自定義驗證、比如身份證、手機號等驗證)
- date – 必須是正確的日期
- dateFormat – 日期必須符合我們指定的格式
- dateBefore -必須是正確的日期并早于我們指定的日期
- dateAfter -必須是正確的日期并晚于我們指定的日期
- contains – 必須包含指定字符串
- creditCard – 必須是正確的信用卡號
- instanceOf – 必須包含指定 PHP 類的實例
- optional – 字段不一定要包含在驗證數(shù)組中、如果有該字段、該字段的值必須通過驗證規(guī)則
注意:如果我們需要驗證浮點數(shù)的最大/最小值,我們需要安裝 PHP BCMath(高精度數(shù)學運算)擴展來保證更好的準確性,建議安裝此擴展,Valitron 將會在檢測到該擴展可用時使用此擴展。
自定義驗證失敗的消息
如果該庫提供的默認失敗提示消息看起來不是那么符合要求,我們可以設置一個自定義消息目錄,然后把驗證字段內容放入到該目錄中即可。驗證消息的具體內容參考該庫官方的驗證消息內容。
use Valitron\Validator as V;
V::langDir(__DIR__.'/validator_lang');
V::lang('zh-cn');
使用 Valitron 可以讓我們的驗證方便不少,驗證方便了,我們就不太可能偷懶去忽略驗證用戶提交的數(shù)據(jù)。數(shù)據(jù)正確了,我們開發(fā)的應用程序的 Bug 就會少很多,程序的穩(wěn)定性和安全性也會有相應的提高。如果你在使用 Valitron 進行數(shù)據(jù)驗證的時候遇到了問題,歡迎在評論中提出交流。


