thinkPHP實(shí)現(xiàn)表單自動(dòng)驗(yàn)證
昨天晚上我們老大叫我弄表單自動(dòng)驗(yàn)證功能,愁了半天借鑒了好多官網(wǎng)的知識(shí),才出來(lái),誒,總之分享一下我自己的成果吧!
thinkphp 在Model基類為我們定義了自動(dòng)驗(yàn)證的函數(shù)和正則表達(dá)式,我們只需要在對(duì)應(yīng)的數(shù)據(jù)庫(kù)表的模型類下建立$_validate屬性就可以了。
1、我們找到Model基類,可以看到 protected $_validate = array(); // 自動(dòng)驗(yàn)證定,它是數(shù)組類型的,下面在對(duì)應(yīng)數(shù)據(jù)模型文件定義它;
2、
public function CheckVerify($verify) {
if (md5($verify) != Session::get('verify')) return false;
return true;
}
//自動(dòng)驗(yàn)證
protected $_validate = array(
array("title", "require", "標(biāo)題必須!"),
array('categoryId', 'require', "類別必須!"),
array('content', 'require', "內(nèi)容必須!"),
array('verify', 'require','驗(yàn)證碼必須!'),
array('verify', 'CheckVerify', '驗(yàn)證碼錯(cuò)誤!', 0, 'callback')
);
3、格式說(shuō)明:array(驗(yàn)證字段,驗(yàn)證規(guī)則,錯(cuò)誤提示,驗(yàn)證條件,附加規(guī)則,驗(yàn)證時(shí)間),
4、參數(shù)解釋:
驗(yàn)證字段:需要驗(yàn)證的表單字段名稱,這個(gè)字段不一定是數(shù)據(jù)庫(kù)字段,也可以是表單的一些輔助字段,例如確認(rèn)密碼和驗(yàn)證碼等等。
驗(yàn)證規(guī)則: 要進(jìn)行驗(yàn)證的規(guī)則,需要結(jié)合附加規(guī)則(必須),官方已經(jīng)包含的規(guī)則如下(自己同時(shí)也可以加):
$validate = array(
'require'=> '/.+/',
'email' => '/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/',
'url' => '/^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/',
'currency' => '/^\d+(\.\d+)?$/',
'number' => '/^\d+$/',
'zip' => '/^[1-9]\d{5}$/',
'integer' => '/^[-\+]?\d+$/',
'double' => '/^[-\+]?\d+(\.\d+)?$/',
'english' => '/^[A-Za-z]+$/',
);
提示信息: 用于驗(yàn)證失敗后的提示信息定義(必須)、
驗(yàn)證條件:(可選)
驗(yàn)證條件的規(guī)則有三條:
Model::EXISTS_TO_VAILIDATE 或者0 存在字段就驗(yàn)證 (默認(rèn))
Model::MUST_TO_VALIDATE 或者1 必須驗(yàn)證
Model::VALUE_TO_VAILIDATE或者2 值不為空的時(shí)候驗(yàn)證
附加規(guī)則:
regex 正則驗(yàn)證,說(shuō)明前面的那個(gè)驗(yàn)證規(guī)則是一個(gè)正則表達(dá)式;
function 使用函數(shù)驗(yàn)證,說(shuō)明前面的那個(gè)驗(yàn)證是個(gè)函數(shù)名;
callback 使用方法驗(yàn)證,說(shuō)明驗(yàn)證規(guī)則是一個(gè)Model類的方法;
confirm 驗(yàn)證表單中的兩個(gè)字段是否相等,驗(yàn)證規(guī)則是一個(gè)字段名;
equal 驗(yàn)證是否等于某個(gè)值,這個(gè)值是有前面的驗(yàn)證規(guī)則定義的;
in 驗(yàn)證是否在某個(gè)范圍之內(nèi),前面定義的是一個(gè)數(shù)組;
unique 驗(yàn)證是否唯一,系統(tǒng)會(huì)根據(jù)字段目前的值查詢數(shù)據(jù)庫(kù)來(lái)判斷時(shí)候存在相同的值;
同時(shí),系統(tǒng)還內(nèi)置了一些常用的正則驗(yàn)證規(guī)則,可以這節(jié)使用,包括:require字段必須,email 郵箱;
currency 貨幣,number 數(shù)字,這些驗(yàn)證規(guī)則可以直接使用;
驗(yàn)證時(shí)間:(可選)
01.Model:: MODEL_INSERT 或者1新增數(shù)據(jù)時(shí)候驗(yàn)證
02.Model:: MODEL_UPDATE 或者2編輯數(shù)據(jù)時(shí)候驗(yàn)證
03.Model:: MODEL_BOTH 或者3 全部情況下驗(yàn)證(默認(rèn))
5、官方示例:
protected $_validate = array(
array('verify','require','驗(yàn)證碼必須!'), //默認(rèn)情況下用正則進(jìn)行驗(yàn)證
array(name,'','帳號(hào)名稱已經(jīng)存在!',0,'unique',1), // 在新增的時(shí)候驗(yàn)證name字段是否唯一
array('value',array(1,2,3),'值的范圍不正確!',2,'in'), // 當(dāng)值不為空的時(shí)候判斷是否在一個(gè)范圍內(nèi)
array('repassword','password','確認(rèn)密碼不正確',0,'confirm'), // 驗(yàn)證確認(rèn)密碼是否和密碼一致
array('password','checkPwd','密碼格式不正確',0,'function')// 自定義函數(shù)驗(yàn)證密碼格式
);
也不知道符合我們老大的要求不,總之還算是出來(lái)了,好辛苦?。?! 大晚上的找代碼,找案例,求安慰??!
- ThinkPHP框架安全實(shí)現(xiàn)分析
- thinkphp微信開(kāi)之安全模式消息加密解密不成功的解決辦法
- thinkphp5.1框架容器與依賴注入實(shí)例分析
- 對(duì)于ThinkPHP框架早期版本的一個(gè)SQL注入漏洞詳細(xì)分析
- ThinkPHP表單自動(dòng)提交驗(yàn)證實(shí)例教程
- ThinkPHP表單自動(dòng)驗(yàn)證實(shí)例
- Thinkphp框架 表單自動(dòng)驗(yàn)證登錄注冊(cè) ajax自動(dòng)驗(yàn)證登錄注冊(cè)
- ThinkPHP框架表單驗(yàn)證操作方法
- 關(guān)于ThinkPhp 框架表單驗(yàn)證及ajax驗(yàn)證問(wèn)題
- ThinkPHP 表單自動(dòng)驗(yàn)證運(yùn)用示例
- thinkPHP自動(dòng)驗(yàn)證、自動(dòng)添加及表單錯(cuò)誤問(wèn)題分析
- ThinkPHP中create()方法自動(dòng)驗(yàn)證表單信息
- TP5框架安全機(jī)制實(shí)例分析
相關(guān)文章
PHP刪除字符串中非字母數(shù)字字符方法總結(jié)
在本篇文章里小編給大家分享了關(guān)于PHP刪除字符串中非字母數(shù)字字符方法和知識(shí)點(diǎn),有需要的朋友們學(xué)習(xí)下。2019-01-01ThinkPHP里用U方法調(diào)用js文件實(shí)例
這篇文章主要介紹了ThinkPHP里用U方法調(diào)用js文件的方法,實(shí)例分析了ThinkPHP中U方法的使用技巧,需要的朋友可以參考下2015-06-06php 實(shí)現(xiàn)一個(gè)字符串加密解密的函數(shù)實(shí)例代碼
php開(kāi)發(fā)中,我們經(jīng)常會(huì)對(duì)字符串進(jìn)行加密解密操作,本文章向大家分享一個(gè)php字符串加密解密的函數(shù),需要的朋友可以參考一下2016-11-11laravel框架之?dāng)?shù)據(jù)庫(kù)查出來(lái)的對(duì)象實(shí)現(xiàn)轉(zhuǎn)化為數(shù)組
今天小編就為大家分享一篇laravel框架之?dāng)?shù)據(jù)庫(kù)查出來(lái)的對(duì)象實(shí)現(xiàn)轉(zhuǎn)化為數(shù)組,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10通過(guò)PHP實(shí)現(xiàn)用戶注冊(cè)后郵箱驗(yàn)證激活
這篇文章主要介紹了通過(guò)PHP實(shí)現(xiàn)用戶注冊(cè)后郵箱驗(yàn)證激活,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11PHP實(shí)現(xiàn)WebService的簡(jiǎn)單示例和實(shí)現(xiàn)步驟
這篇文章主要介紹了PHP實(shí)現(xiàn)WebService的簡(jiǎn)單示例和實(shí)現(xiàn)步驟,本文直接給出示例代碼并分步驟講解,需要的朋友可以參考下2015-03-03Yii2中hasOne、hasMany及多對(duì)多關(guān)聯(lián)查詢的用法詳解
hasOne、hasMany是Yii2特有的用于多表關(guān)聯(lián)查詢的函數(shù),平時(shí)在使用多表關(guān)聯(lián)查詢的時(shí)候建議使用它們。這篇文章主要介紹了Yii2中hasOne、hasMany及多對(duì)多關(guān)聯(lián)查詢的用法詳解,需要的朋友可以參考下2017-02-02