php语言 百分网手机站

ThinkPHP中自动验证

时间:2020-10-10 19:01:30 php语言 我要投稿

ThinkPHP中自动验证

  学无止境,刚开始学习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
  12
  class UserModel extends Model {
  protected $_validate = array(
  //默认情况下用系统内置
  array('user', 'require', '用户不得为空!'),
  //验证数据唯一性
  array('user', '', '用户名称已存在!',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
  14
  class UserModel extends 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<$min || $len>$max){
  return false;
  }else{
  return true;
  }
  }
  }
  其中回调函数直接写在user类里面
  2、function(函数验证)
  UserModel.class.php中的格式如下:
  ?
  class UserModel extends Model{
  protected $_validate=array(
  array('user','checklength','用户名必须在3-5之间!',0,'function',3,array(3,5)),
  );
  }
  函数内容需要在 Home/Common 文件夹下的 Common 文件夹建立 function.php 文件,会自动加载,内容如下:
  ?
  function checkLength($str,$min,$max) {
  preg_match_all("/./u", $str, $matches);
  $len = count($matches[0]);
  if ($len < $min || $len > $max) {
  return false;
  } else {
  return true;
  }
  }

【ThinkPHP中自动验证】相关文章:

1.thinkPHP的RBAC权限管理

2.Thinkphp 多语言功能完善

3.Thinkphp的多语言功能完善

4.PHP 表单验证方法

5.怎样在word中自动生成摘要

6.本地环境thinkphp5集成workerman教程

7.PHP邮件发送验证

8.php如何实现验证码

9.php实现验证码制作