• 03-创建模型操作---用户添加


    注册页面 add.html

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     2 <html>
     3 <head>
     4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     5 <title>Insert title here</title>
     6 </head>
     7 <body>
     8 <div style="400px;margin:0 auto">
     9     <form action="__URL__/insert" method="post">
    10         用户名:<input type="text" name="username" /><br/>
    11         密      码:<input type="password" name="password" /><br/>
    12         昵    称:<input type="text" name="name" /><br/>
    13         Email:<input type="text" name="email" /><br/>
    14         是否激活:<input type="radio" name="active" value="1" checked/>是<input type="radio" name="active" value="0"/>否<br/>
    15         <input type="submit" value="登录"/>
    16     </form>
    17 </div>
    18 </body>
    19 </html>

    UserModel.class.php用户模型验证

    <?php
        class UserModel extends Model{
    //----------表单验证
            //数据对象是由表单提交的$_POST数据创建。需要使用系统的自动验证功能,只需要在Model类里面定义$_validate属性,是由多个验证因子组成的二维数组。
            //array(验证字段,验证规则,错误提示,[验证条件,附加规则,验证时间])
            //        必填        必填        必填        默认0 存在字段就验证    默认regex 正则验证  默认3 全部情况验证
            protected $_validate=array(
                //   用户名字段     字段必须    验证失败提示信息  1:必须验证  regex:正则验证   3:全部情况下验证
            array('username','require','用户名必须填写',1,'regex',3),
               //用户名字段  验证规则   提示信息  1:必须验证   unique:验证字段在数据库是否唯一  1:新增数据时验证
                array('username','','用户账号已经存在!',1,'unique',1),
            //   用户名字段     字段必须    验证失败提示信息  0:存在字段就验证  regex:正则验证     1:新增数据时验证    
            array('password','require','用户密码必须填写!',0,'regex',1),
            //confirm:验证表单中的两个字段是否相同,定义的验证规则是一个字段名
            //array('rpwd','pwd','两次密码不一致!',0,'confirm'),
            array('name','require','用户昵称必须存在!',1),
            array('email','require','邮箱不能为空!'),
            array('email','email','邮箱格式不符合要求!'),
            //array('email','','邮箱已经存在!',1,'unique',3),
            //callback方法验证,定义的验证规则是当前模型类的一个方法--仅在该类使用
            array('email','checkEmail','邮箱已经存在!',1,'callback',3), 
            //in验证是否在某个范围内,定义的验证规则必须是一个数组,active在数据库中表示 用户是否激活
            array('active',array(0,1),'注意数据,启用:1 ; 停用:0',0,'in'),    
            
            //array('password','checkPwd','密码格式不正确',0,'function'), // 自定义函数验证密码格式,checkPwd函数可以在Common中被调用,公用
    
            );
            
    //----字段映射,避免被暴露字段信息及表结构
            protected $_map=array(
            //将表单username映射为uname,password映射为pwd,注意映射后要在表单验证时要使用uname,pwd字段
            //问题使用uname后一些表单验证需要自己重写正则规则,而不能使用unique等框架上的直接验证,需要重写规则 
        //    'uname'=>'username',
        //    'pwd'=>'password',
            );
    
    
    //-----数据的自动完成,登录时间自动填写,密码md5加密
            protected $_auto=array(
                //array(填充字段,填充内容,填充条件,附加规则)
            //填充条件1:新增数据(默认) 2:更新数据 3:所有情况
                array('password','md5',1,'function'),
                array('reg_date','getDate',1,'callback')
            );
    
            function getDate(){
                return date('Y-m-d H:i:s');
            }
                
        function checkEmail(){
            $user=new Model('User');
            if(empty($_POST['id'])){
                if($user->getByEmail($_POST['email'])){
                    return false;
                }else{
                    return true;
                }
            }else{
                //判断邮箱与其他人的邮箱是否相同
                if($user->where("id!={$_POST['id']} and email='{$_POST['email']}'")->find()){
                    return false;
                }else{
                    return true;
                }
            }
        }
            
        }
    
    ?>

    UserAction.class.php操作

     1 <?php 
     2         class UserAction extends Action{
     3             public function index(){
     4                 $this->display();
     5                 
     6             }
     7             public function add(){
     8                 $this->display();
     9             }
    10             
    11             public function insert(){
    12                 $m=new UserModel();
    13             //    dump($m->create());//// 如果创建失败返回false, 表示验证没有通过       $m->getError()输出错误提示信息
    14                 if($m->create()){  //验证成功
    15                     if($m->add()){  //判断添加是否成功
    16                         echo "操作成功插入数据编号为".$m->getLastInsID();  //返回最新自增长id
    17                         //$this->success('操作成功,插入数据编号为:'.$uid);
    18                     }
    19                     else{
    20                         echo "创建失败".$m->getDbError(); //返回操作数据错误sql
    21                     }
    22                 }else{
    23                     echo $m->getError();  //返回验证错误信息
    24                 }
    25                 
    26                 
    27             }
    28         }
    29         
    30 
    31 ?>
  • 相关阅读:
    word-wrap与word-break为长单词换行
    background-origin与background-clip的“区别”
    box-shadow
    你不知道的border-radius
    当document.write 遇到外联script
    getAttribute()方法的第二个参数
    Backbone.js入门教程第二版笔记(3)
    Backbone.js入门教程第二版笔记(2)
    php中的字符串常用函数(二) substr() 截取字符串
    php中类和对象的操作
  • 原文地址:https://www.cnblogs.com/freestyle-le/p/4512310.html
Copyright © 2020-2023  润新知