问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

thinkphp 自动验证 格式

发布网友 发布时间:2022-04-07 05:00

我来回答

2个回答

热心网友 时间:2022-04-07 06:29

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 自动验证功能十分强大,能满足对表单的各种验证要求。

热心网友 时间:2022-04-07 07:47

1、array('user_name','^[0-9]*$','用户名不符合规则',self::VALUE_VALIDATE,'regex',self::MODEL_BOTH),试下这样
2、验证是否唯一,自定义个查询条件,多增加1个array就可以了。

具体看这里:http://www.thinkphp.cn/document/171.html
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何做出美味的酸汤挂面? 山西特色酸汤面的做法 台湾手机怎么登支付宝 台湾人怎么绑定支付宝?操作步骤介绍 二楼卫生间用水,地下室卫生间就反水(蹲坑的不会,只有地漏洗手盆会反水... ...方便吗?污水怎么处理呢?地下室通风不好会不会有异味啊? 房屋安全鉴定包括哪些内容? 宝宝稀耳屎会狐臭吗 梦见好多好多小青蛇满屋子乱爬就像豆角一样直着爬,我忙去抓,把它们捆... 跟女生确认关系后,她就变得非常主动,这是怎么回事呢?这种转变正常... 谁知道部队的宣传栏是如何设计的!谢谢啊! 跪求八一建军节宣传栏资料!!! 龟头有龟裂纹怎么回事,可以康复吗 龟头开裂 不痛 怎么办 龟头皲裂怎么办啊? 龟头有裂纹 龟头两侧有裂痕吗 龟头有裂纹怎么办 在龟头上出现明显裂纹 怎样判断1个化学反应是吸热还是放热? 旗袍走秀最性感的样子是什么样子? 初学旗袍秀基本步该怎么走 《溏心风暴之家好月圆》大家搞活动穿着旗袍走秀的那场是第几集? ThinkPHP 自动验证是怎么弄得? 联通停机业务后还会扣费吗 请问联通欠费停机了,没有去销号,会一直扣费吗 我的联通手机欠费后套餐每个月都计费吗 联通卡号停机了,不去注销会一直扣费吗? 联通欠费停机后还会一直增加欠费金额吗? 联通手机卡不用了还会继续扣费吗? 梦见帮过世的婆婆洗拉屎的裤子 QQ空间录音只能录60秒,请问如何延长时间? 梦见跟弟媳在河边洗老婆婆的拉屎的裤子? 怎么让qq录音时间变长? 手机qq录音以前可以60秒,不知道怎么回事现在只能15秒,这个qq录音时间长短在哪里设置 梦见给婆婆洗屎布子 ThinkPHP自动验证的问题 梦见过世了的婆婆在家用水洗身上的大便 梦见婆婆象僵尸一样,拉了稀屎,我给她冼澡,预示着什么? 儿媳梦见去世的婆婆把大便搞到身上,要我给她去买裤子? 梦见洗衣服把婆婆的裤子冲掉了又捡回来了 怎么把qq收到的录音改成闹铃 怎样才能在QQ语音时录音? 周公解梦大全查询梦见给婆婆妈买新裤子穿在身上 梦见给婆婆买的黄色的衣服和裤子 锡有几种读音,有几种意思? 锡的意思好吗? “锡”字在人名里作什么讲 积木的拼音是什么 锡是什么意思