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="width: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 ?>