Yii 2 字段校驗

2021-09-22 01:17:58 字數 1876 閱讀 9131

開發web應用有乙個很重要的原則,就是不要相信任何輸入的資料,在使用之前必須要進行有效性檢查,否則很有可能會引發各種安全性問題。yii 2當然也不會忽略這個問題,提供了校驗器這一有力的工具,該工具可同時提供客戶端和伺服器端的資料校驗。

在model內,過載rules()介面,配置每個欄位的規則,如下(以loginform為例):

public functionrules()

每一行中,前面是欄位名稱,最後乙個元素是規則的名稱。這些規則最終是通過「校驗器」來完成校驗的。當然內建的校驗器肯定不能夠全部滿足需求,因此yii 2在根據規則名稱建立校驗器的時候,會首先檢查該model中是否有跟規則名稱相同的函式,如果有,則校驗規則的時候就直接用該函式來完成校驗,譬如上面**中的「validatepassword」規則,在loginform中就有介面:

public functionvalidatepassword

($attribute

, $params)}

} yii 2中,校驗器存放於vendor\yiisoft\yii2\validators目錄下,有如下內建校驗器(這些校驗器沒有全部都用過,這裡列出來功能,細節待用到的時候再研究):

boolean

檢測輸入值是否為boolean型別

captcha

檢測輸入的校驗碼是否正確,這個需要與yii\captcha\captchaaction一起使用

compare

與指定值進行比較,確認兩者是否符合比較條件(如:>=、=、

<=),譬如註冊時會要求輸入兩次密碼,要比較這兩次輸入的密碼是否相同

date

檢測輸入值是否為date型別

datetime

檢測輸入值是否為datetime型別

time

檢測輸入值是否為time型別

default

這個實際上不是乙個校驗器,是當某個屬性為空時,提供預設值用的

double

檢測輸入值是否為double型別

each

對輸入的一組資料進行校驗

email

檢測輸入值是否為email位址

exist

判斷輸入的值是否在資料庫中存在,常用於檢查某個值在外鍵中是否存在

file

檢測輸入值是否為檔案

filter

將輸入值轉換為另乙個值,它實際上不是個校驗器。

image

檢測輸入值是否為 in

檢測輸入值是否在指定的列表中

integer

檢測輸入值是否為integer型別

match

使用正規表示式檢查輸入值

required

檢測輸入值是否為空

safe

標誌輸入的字段是否可信,yii對model的每個欄位都要求必須要有校驗器,但是有時候有些字段的確不需要,譬如主鍵id。

string

檢測輸入值是否為string型別

trim

這實際上是乙個轉換器,去除掉輸入的前後空格

unique

檢測輸入值在表中是否唯一

url檢測輸入值是否為url

ip檢測輸入值是否為ip位址

參考文獻:

1、

新建乙個檔案:

?php

namespace common\helps;

useyii\validators\validator;

class

arrayvalidator 

extends

validator }}

使用的時候:

public

function

rules()

Yii 2 登入使用者校驗

在登入頁面,輸入使用者名稱密碼後,yii2是如何完成使用者名稱和密碼的校驗的?根據yii的規則,使用者校驗的入口是從action開始的 sitecontroller actionlogin loginform login loginform validate loginform validatepa...

Yii2讓關聯字段支援搜尋功能

yii2讓關聯字段支援搜尋功能 這裡有兩張表,表結構如下,companies compay id 為外來鍵 yii2advanced.branches表 branch id int 11 companies company id int 11 branch name varchar 100 bran...

yii2框架 yii2自身的自動載入 三

上一節說完了composer的自動載入,下面我們來說一下yii2自身的自動載入。在我們的入口檔案,例如index.php,如下 comment out the following two lines when deployed to production defined yii debug or d...