亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于thinkphp 3.2.2版本,有些問題不太明白?

關于thinkphp 3.2.2版本,有些問題不太明白?

嚕嚕噠 2023-03-02 17:13:04
1、自動驗證格式正確嗎?若不正確該怎么寫?2、假如我要驗證user_name的格式是否正確,還要驗證是否唯一,需要添加兩條array嗎?
查看完整描述

2 回答

?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

1、array('user_name','^[0-9]*$','用戶名不符合規則',self::VALUE_VALIDATE,'regex',self::MODEL_BOTH),試下這樣
2、驗證是否唯一,自定義個查詢條件,多增加1個array就可以了。

查看完整回答
反對 回復 2023-03-06
?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

ThinkPHP 自動驗證格式如下
array(驗證字段,驗證規則,錯誤提示[,驗證條件][,附加規則][,驗證時間])

ThinkPHP 自動驗證定義的附加規則如下:
regex:使用正則進行驗證(默認)
unique:驗證唯一性
confirm:驗證表單中的兩個字段是否相同
equal:驗證是否等于某個值
in:驗證是否在某個范圍內
function:使用函數驗證
callback:使用方法驗證
自動驗證例子
各種自動驗證參考例子如下:
// 默認情況下用正則進行驗證
array('title','require','標題不能為空。'),
array('order','number','排序必須是數字。',2),
array('email','email','郵箱格式不符合要求。'),
array('qq','qq','QQ號碼不正確。'),

// 在新增的時候驗證標題title字段是否唯一
array('title','','標題已經存在!',0,'unique',1), 

// 驗證確認密碼是否和密碼一致
array('repassword','password','確認密碼不正確。',0,'confirm'), 

// 驗證class填寫的值為 一班
array('class','一班','班級必須填寫一班。',0,'equal'), 

// 當值不為空的時候判斷是否在一個范圍內
array('value',array(1,2,3),'值的范圍不正確。',2,'in'), 

// 自定義函數驗證用戶名格式
array('username','checkName','用戶名格式不正確。',0,'function'), 

// 在注冊或更改資料是調用 checkEmail 方法檢查郵箱
array('email','checkEmail',1,'callback'),

使用正則表達式(regex)驗證
上述幾類附加規則中,使用正則表達式是經常使用的,也是系統默認的驗證附加規則。系統內置了如下正則檢測規則:
require(必須)、email(郵箱格式)、url(URL地址)、currency(貨幣)、number(數字)、qq(QQ號碼)、english(英文字符)。
這些附加規則可以直接使用,如果這些附加規則無法滿足要求,可以使用自定義的正則規則:
array('username','/^{3,15}$/','用戶名不符合要求。'),

該規則要求用戶名只能為英文字符及下劃線和數字組成,且長度為3-15個字節。
要了解更多的正則表達式規則參見《PHP 常用正則表達式整理》。
使用自定義函數(function)驗證
使用自定義函數驗證附加規則,函數可以是 Common/common.php 里的自定義函數,也可以是 PHP 的內置函數:
class UserModel extends Model{
protected $_validate = array(
array('username','checkName','用戶名不符合要求。',0,'function'),
};
}

自定義 checkName 函數:
function checkName($username){
if(!preg_match('/^{3,15}$/', $username)){
return false;
}else{
return true;
}
}

提示:對于用戶名的規則可以直接使用正則驗證而無需函數,在此只是為了演示自定義函數的驗證的用法而已。
使用方法(callback)驗證
ThinkPHP 自動驗證還支持調用當前 Model 類的一個方法來進行驗證。
class UserModel extends Model{
protected $_validate = array(
array('email','checkEmail','郵箱已經存在。',1,'callback'),
};

// checkEmail方法
protected function checkEmail(){
$User=new Model('User');
// 新用戶注冊,驗證唯一
if(empty($_POST<'uid'>)){
if($user->getByEmail($_POST<'email'>)){
return false;
}else{
return true;
}
}else{
// 更改資料判斷郵箱與其他人的郵箱是否相同
if($user->where("uid!={$_POST<'uid'>} and email='{$_POST<'email'>}'")->find()){
return false;
}else{
return true;
}
}
}
}

當 checkEmail 方法返回 false 時,驗證就不通過。
可見 ThinkPHP 自動驗證功能十分強大,能滿足對表單的各種驗證要求。

 


查看完整回答
反對 回復 2023-03-06
  • 2 回答
  • 0 關注
  • 133 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號