久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

ThinkPHP開發(fā)指南-模型之類型檢測(cè)

來自站長(zhǎng)百科
跳轉(zhuǎn)至: 導(dǎo)航、? 搜索

導(dǎo)航:上一頁

新版的ThinkPHP具有字段類型檢測(cè),對(duì)于不合法的字段數(shù)據(jù)會(huì)進(jìn)行強(qiáng)制轉(zhuǎn)換。字段類型檢測(cè)可以用于數(shù)據(jù)寫入和數(shù)據(jù)查詢操作。需要啟用字段類型檢測(cè)的話,需要在配置文件中開啟DB_FIELDTYPE_CHECK參數(shù):

PHP代碼

'DB_FIELDTYPE_CHECK'=>true,  // 開啟字段類型驗(yàn)證 

如果在非調(diào)試模式下面開啟字段類型檢測(cè)后,請(qǐng)清空字段緩存目錄(位于Runtime/Data/_fields/),重新生成字段緩存的時(shí)候,會(huì)在緩存文件中記錄字段的類型信息。這是后面進(jìn)行字段類型檢測(cè)的前提。

字段類型檢測(cè)主要在兩個(gè)階段會(huì)自動(dòng)處理:

  • 在數(shù)據(jù)寫入到數(shù)據(jù)庫之前

例如PHP代碼

$User = M("User"); // 實(shí)例化User對(duì)象    

// 然后直接給數(shù)據(jù)對(duì)象賦值    

$User->name = 'ThinkPHP';    

$User->score = '2ThinkPHP';    

// 把數(shù)據(jù)對(duì)象添加到數(shù)據(jù)庫    

$User->add();   

由于用戶表的score設(shè)計(jì)的是數(shù)字類型,所以實(shí)際寫入數(shù)據(jù)庫之前,score屬性的值已經(jīng)被強(qiáng)制進(jìn)行intval轉(zhuǎn)換了,模型的save方法也會(huì)同樣進(jìn)行字段類型檢查。雖然在很多情況下,數(shù)據(jù)庫本身也會(huì)進(jìn)行數(shù)據(jù)轉(zhuǎn)換,但是對(duì)于某些數(shù)據(jù)庫要求嚴(yán)格檢查數(shù)據(jù)類型的情況會(huì)有幫助。

  • 在使用數(shù)組方式的普通查詢條件后

例如PHP代碼

$User = M("User"); // 實(shí)例化User對(duì)象    

$condition['id'] = '1 OR 1=1';    

// 把查詢條件傳入查詢方法    

$User->where($condition)->select(); 

對(duì)于這樣的一個(gè)查詢條件,在進(jìn)行數(shù)據(jù)庫查詢之前,會(huì)對(duì)查詢的數(shù)組條件進(jìn)行字段類型檢查,直接就把id的值強(qiáng)制轉(zhuǎn)換為1然后再進(jìn)行查詢操作。即使不進(jìn)行強(qiáng)制轉(zhuǎn)換,系統(tǒng)也會(huì)進(jìn)行安全過濾,把這樣的非法數(shù)據(jù)進(jìn)行轉(zhuǎn)義,區(qū)別在于這樣對(duì)于數(shù)據(jù)庫更加安全,對(duì)于某些數(shù)據(jù)庫要求嚴(yán)格檢查數(shù)據(jù)類型的情況會(huì)有幫助。