php自动验证,ThinkPHP中自动验证

ThinkPHP中自动验证:array(‘字段’,‘验证规则’,‘错误提示’[,‘验证条件’,‘附加规则’,‘验证时间’]),。1、验证字段:一般来说是表单的字段名,但不一定需要与数据表的字段匹配,比如新用户注册时常见的密码确认2、验证规则:系统内置了常用的规则,require(字段必填)、 email(邮箱格式)、url(url格式)、currency(货币)、number(正整数)、integer(整数)、double(浮点数)、zip(邮政编码政编码)、english。这些规则默认采用的附加规则是 regex,正则表达式验证,只不过是设定好的。3、错误信息:验证失败后的提示。4、验证条件:共三种:1.self::EXISTS_VALIDATE 或 0,表示存在字段就验证(推荐使用) ;2.self::MUST_VALIDATE 或 1,表示必须验证;3.self::VALUE_VALIDATE 或 2,表示值不为空的时候验证。5、验证时间:主要新增修改等验证。1.self::MODEL_INSERT 或 1 新增数据时验证;2.self::MODEL_UPDATE 或 2 编辑数据时验证;3.self::MODEL_BOTH 或 3 全部情况下验证(推荐使用)。

一、静态定义

在模型类里预先定义好该模型的自动验证规则,就是静态定义。1、在Home/Model目录下建立UserModel.class.php文件,内容如下:

1

2

3

4

5

6

7

8

9

10

11

12class UserModelextends Model {

protected $_validate = array(

//默认情况下用系统内置

array('user','require','用户不得为空!'),

//验证数据唯一性

array('http://www.jiekeqipais.com','','用户名称已存在!',2,'unique',1),

//验证密码不得为空

array('pass','require','密码不得为空!'),

//密码不得小于六位不得大于20位

array('pass','6,20','密码不得小于6位,不得大于20位',3,'length'),

);

}

2、在Home/controller目录下建立Usercontroller.class.php,内容如下:

1

2

3

4

5

6

7

8

9

10//控制器create()方法自动调用验证

$user = D('User');

$data['user'] ='蜡笔小新';

$data['pass'] ='123';

if ($user->create($data)) {

echo'所有数据验证成功!';

}else {

//输出错误信息

var_dump($user->getError());

}

重点介绍一下附加规则中的callback(回调验证)和function(函数验证):

1、callback(回调验证)

UserModel.class.php中的格式如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14class UserModelextends Model{

protected $_validate=array(

array('user','checklength','用户名必须在3-5之间!',0,'callback',3,array(3,5)),

);

function checklength($str,$min,$max){

preg_match_all("/./u", $str,$matchs);

$len=count($matchs[0]);

if($len$max){

return false;

}else{

return true;

}

}

}

其中回调函数直接写在user类里面

2、function(函数验证)

UserModel.class.php中的格式如下:

1

2

3

4

5class UserModelextends Model{

protected $_validate=array(

array('user','checklength','用户名必须在3-5之间!',0,'function',3,array(3,5)),

);

}

函数内容需要在 Home/Common 文件夹下的 Common 文件夹建立 function.php 文件,会自动加载,内容如下:

1

2

3

4

5

6

7

8

9function checkLength($str,$min,$max) {

preg_match_all("/./u", $str, $matches);

$len = count($matches[0]);

if ($len < $min || $len > $max) {

return false;

}else {

return true;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值