zoukankan      html  css  js  c++  java
  • tinkphp中的自动验证

    tinkphp是国内非常流行的一个开源框架,国内大小公司都在用的框架。对于初学的好多同学感觉不太好上手,其实并没没有大家想的那么复杂。自动验证功能是thinkphp提高的一种数据验证方法,分为动态和静态两种方式。但是无论什么验证方式,验证的规则都是一样的。具体的规则如下:

    规则是一个二维数组的格式     array(

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

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

                                                     );

    数据验证的前三条是必须的,后三条是可选的。

    1. 验证字段可以是数据库字段,也可以是自己表单定义的字段。(必须)

    2. 验证规则可以使用正则,也可以使用一些系统内置的方法,例如:require 字段必须,email邮箱,url地址等。(必须)

    3. 提示信息就是验证失败后提示的内容。(必须)

    4. 验证条件seft::EXITS_VALIDATE 或者 0 存在字段就验证    seft::MUST_VALIDATE 或者1 必须验证   seft::VALUE_VALIDATE 或者2 值不为空验证。(可选)

    5. 附加规则配合规则使用,包括一些规则,例如:regex,验证规则必须是一个正则表达式。function,验证规则必须是一个函数。unique,验证是否唯一。更多的可以去thinkphp开发文档去看。(可选)

    6. 验证时间 MODEL_INSERT 或者1 添加数据验证, MODEL_UPDATE 或者2 编辑数据验证, MODEL_BOTH 或者3 都验证。(可选)

    知道了规则,我们可以自己尝试写一写,首先可以先一个静态的:

    class UserModel extends Model{

             protected $_validate = array(

                           array("verify","require","验证码不能为空!");

                           array("name"," ","用户名已存在!",0,unique,1); //新增是验证用户是否唯一

                           array("value",array(1,2,3),"值不在范围内!",2,in); //值是否在范围内

                          array("repassword","password","密码不正确!",0 ,confirm) //验证确认密码是否和密码一致

                          array("password","checkpasswd","密码格式不正确",0 ,function) //验证密码格式格式是否正确

                  );

    }

    定义好验证规则以后,直接就可以用了:

                              $user = D("User");

                              $data = getData();  /获取的表单数据

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

                                           //没有通过验证

                                           exit($user->getErro());    

                              }

     默认情况下,create方法是对表单提交的POST数据进行自动验证,如果你的数据来源不是表单post,仍然也可以进行自动验证。

    动态验证:

    动态验证就比较简单了,将上面的规则赋值给一个变量,把变量赋值给validate()方法中,如下:

    1. $rules = array(
    2.     array('verify','require','验证码必须!'), //默认情况下用正则进行验证
    3.     array('name','','帐号名称已经存在!',0,'unique',1), // 在新增的时候验证name字段是否唯一
    4.     array('value',array(1,2,3),'值的范围不正确!',2,'in'), // 当值不为空的时候判断是否在一个范围内
    5.     array('repassword','password','确认密码不正确',0,'confirm'), // 验证确认密码是否和密码一致
    6.     array('password','checkPwd','密码格式不正确',0,'function'), // 自定义函数验证密码格式
    7. );
    8. $User = M("User"); // 实例化User对象
    9. if (!$User->validate($rules)->create()){
    10.     // 如果创建失败 表示验证没有通过 输出错误提示信息
    11.     exit($User->getError());
    12. }else{
    13.     // 验证通过 可以进行其他数据操作
    14. }
  • 相关阅读:
    用例图解析
    A B C D类网络地址
    B-树特征
    常用的中间代码
    UML图
    关于文件索引的一道习题
    数据流图的一些原则
    系统总线
    各种排序方法的时间复杂度、空间复杂度和稳定性统计表
    模拟银行自助终端系统
  • 原文地址:https://www.cnblogs.com/beili/p/8676633.html
Copyright © 2011-2022 走看看