Thinkphp 3.23 动态验证

ThinkPHP 内置了数据对象的自动验证功能来完成模型的业务规则验证。自动验证是基于数据对象的,而大多情况下数据对象是基于 $_POST表单 (不是绝对的)创建的。

基本的自动验证功能包括:必须字段、email邮箱格式、唯一性、URL地址、数字、两个字段是否相同、是否等于某个值等。

要使用系统的自动验证功能,只需要在对应的 Model类 里面定义 $_validate 属性(由多个验证因子组成的数组),语法如下:

protected $_validate = array(
    array(验证字段,验证规则,错误提示[,验证条件][,附加规则][,验证时间])
};

ThinkPHP自动验证格式说明:
验证因子 说明
验证字段 必须。需要验证的表单字段名称,这个字段不一定是数据库字段,也可以是表单的一些辅助字段,例如验证码等。
验证规则 必须。要进行验证的规则,需要联合附加规则一起使用。
错误提示 必须。当验证不通过时的提示信息。
验证条件 可选。包括:
  1. Model::EXISTS_TO_VAILIDATE 或者 0 :存在字段就验证(默认)
  2. Model::MUST_TO_VALIDATE 或者 1 :必须验证
  3. Model::VALUE_TO_VAILIDATE 或者 2 :值不为空的时候验证
附加规则 可选。配合验证规则使用,包括:
  1. regex:使用正则进行验证,表示前面定义的验证规则是一个正则表达式(默认)
  2. unique:验证唯一性,系统会根据字段目前的值查询数据库来判断是否存在相同的值
  3. confirm:验证表单中的两个字段是否相同,前面定义的验证规则是一个字段名
  4. equal:验证是否等于某个值,该值由前面的验证规则定义
  5. in:验证是否在某个范围内,前面定义的验证规则必须是一个数组
  6. function:使用函数验证,表示前面定义的验证规则是一个函数名
  7. callback:使用方法验证,前面定义的验证规则是当前 Model 类的一个方法
验证时间 可选。包括:
  1. Model:: MODEL_INSERT 或者 1 :新增数据时候验证
  2. Model:: MODEL_UPDATE 或者 2 :编辑数据时候验证
  3. Model:: MODEL_BOTH 或者 3 :全部情况下验证(默认)

$rules = array(
array('uphone','checkMobile','手机号格不正确',1,'function'),
array('uphone','','手机号已被注册!',1,'unique',3),
array('password','require','密码必须填写',1),
array('password','/^\w{6,17}$/','密码格式不正确',1),
// array('code','/^\w{6,17}$/','验证码格式不正确',0)
);

$User = M('user');
if($User->validate($rules)->create() ===false){
exit(setResponse('-200',$User->getError()));
}

$phone = I('post.uphone');
$password = I('post.password');
$data = array('uphone'=>$phone,'upass'=>password_hash($password,PASSWORD_DEFAULT));
$data['is_admin_add'] =0;
$data['nickname'] ='游客'.substr($phone,7);
$data['headurl'] ='/Uploads/home/headimg/ETT1Q$6~EYE6HC264L0NBQ3.png';

$uid = $User->add($data);
if($uid){
$user = $User->where(array('user_id'=>$uid))->field('headurl,nickname,user_id,point,score,total_earnings')->find();
sucRet($user);
}else{
errRet('注册失败');
}



function里面的方法可以写到此方法内部  也可以在common/common/function.php  内部unique判断唯一时  该字段名字一定要数据库保持一致

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,是为了敏捷WEB应用 开发和简化企业级应用开发而诞生的。拥有众多的优秀功能和特性,经历了三年多发展的同时,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和 改进,众多的典型案例确保可以稳定用于商业以及门户级的开发。 ThinkPHP借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,采用单一入口模式等,融合了Struts的 Action思想和JSP的TagLib(标签库)、RoR的ORM映射和ActiveRecord模式,封装了CURD和一些常用操作,在项目配置、类 库导入、模版引擎、查询语言、自动验证、视图模型、项目编译、缓存机制、SEO支持、分布式数据库、多数据库连接和切换、认证机制和扩展性方面均有独特的 表现。 使用ThinkPHP,你可以更方便和快捷的开发和部署应用。当然不仅仅是企业级应用,任何PHP应用开发都可以从ThinkPHP的简单 和快速的特性中受益。ThinkPHP本身具有很多的原创特性,并且倡导大道至简,开发由我的开发理念,用最少的代码完成更多的功能,宗旨就是让WEB应 用开发更简单、更快速。为此ThinkPHP会不断吸收和融入更好的技术以保证其新鲜和活力,提供WEB应用开发的最佳实践! ThinkPHP遵循Apache2开源许可协议发布,意味着你可以免费使用ThinkPHP,甚至允许把你基于ThinkPHP开发的应用开源或商业产 品发布/销售。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值