当前位置:首页 > CMS教程 > Thinkphp > 列表

ThinkPHP 自动验证实例

发布:smiling 来源: PHP粉丝网  添加日期:2015-09-30 14:50:20 浏览: 评论:0 

ThinkPHP 自动验证语法回顾

ThinkPHP 自动验证格式如下:

array(验证字段,验证规则,错误提示[,验证条件][,附加规则][,验证时间])

ThinkPHP 自动验证定义的附加规则如下:

regex:使用正则进行验证(默认)

unique:验证唯一性

confirm:验证表单中的两个字段是否相同

equal:验证是否等于某个值

in:验证是否在某个范围内

function:使用函数验证

callback:使用方法验证

自动验证例子,各种自动验证参考例子如下:

  1. // 默认情况下用正则进行验证  
  2. array('title','require','标题不能为空。'),  
  3. array('order','number','排序必须是数字。',2),  
  4. array('email','email','邮箱格式不符合要求。'),  
  5. array('qq','qq','QQ号码不正确。'),  
  6. // 在新增的时候验证标题title字段是否唯一  
  7. array('title','','标题已经存在!',0,'unique',1),  
  8.  // 验证确认密码是否和密码一致  
  9. array('repassword','password','确认密码不正确。',0,'confirm'),  
  10.  // 验证class填写的值为 一班  
  11. array('class','一班','班级必须填写一班。',0,'equal'),  
  12.  // 当值不为空的时候判断是否在一个范围内  
  13. array('value',array(1,2,3),'值的范围不正确。',2,'in'),  
  14.  // 自定义函数验证用户名格式 //phpfensi.com 
  15. array('username','checkName','用户名格式不正确。',0,'function'),  
  16.  // 在注册或更改资料是调用 checkEmail 方法检查邮箱  
  17. array('email','checkEmail',1,'callback'), 

使用正则表达式(regex)验证

上述几类附加规则中,使用正则表达式是经常使用的,也是系统默认的验证附加规则,系统内置了如下正则检测规则:

require(必须)、email(邮箱格式)、url(URL地址)、currency(货币)、number(数字)、qq(QQ号码)、english(英文字符).

这些附加规则可以直接使用,如果这些附加规则无法满足要求,可以使用自定义的正则规则:

array('username','/^{3,15}$/','用户名不符合要求。'),

该规则要求用户名只能为英文字符及下划线和数字组成,且长度为3-15个字节.

使用自定义函数(function)验证

使用自定义函数验证附加规则,函数可以是 Common/common.php 里的自定义函数,也可以是 PHP 的内置函数:

  1. class UserModel extends Model{  
  2.  protected $_validate = arrayarray('username','checkName','用户名不符合要求。',0,'function'), };  

自定义 checkName 函数:

  1. function checkName($username){  
  2.  if(!preg_match('/^{3,15}$/'$username)){ 
  3.       return false;  
  4.  }else{  
  5.     return true;  
  6.  }  

提示:对于用户名的规则可以直接使用正则验证而无需函数,在此只是为了演示自定义函数的验证的用法而已.

使用方法(callback)验证.

ThinkPHP 自动验证还支持调用当前 Model 类的一个方法来进行验证.

  1. class UserModel extends Model{  
  2.  protected $_validate = arrayarray('email','checkEmail','邮箱已经存在。',1,'callback'),  
  3. };  
  4.  // checkEmail方法  
  5.  protected function checkEmail(){  
  6.  $User=new Model('User');  
  7.  // 新用户注册,验证唯一  
  8.  if(emptyempty($_POST<'uid'>)){  
  9.  if($user->getByEmail($_POST<'email'>)){  
  10.  return false;  
  11.  }else{  
  12.  return true;  
  13.  }  
  14.  }else{  
  15.  // 更改资料判断邮箱与其他人的邮箱是否相同  
  16.  if($user->where("uid!={$_POST<'uid'>} and email='{$_POST<'email'>}'")->find()){ 
  17.  return false;  
  18.  }else
  19.  return true; 
  20.  } 
  21.  } } } 

当 checkEmail 方法返回 false 时,验证就不通过,可见 ThinkPHP 自动验证功能十分强大,能满足对表单的各种验证要求.

Tags: ThinkPHP实例 ThinkPHP自动验证

分享到: