首页 > 开发 > ThinkPHP > 正文

thinkphp之3.1版本自动验证

2024-09-09 15:19:46
字体:
来源:转载
供稿:网友

新版本出来之后,也可以在 controller里面验证,需要指定两个变量一个是 $validate $auto 里面指定的规则和 model中一样。

之前用把自动验证放在model里面总是有问题,先D实例化model类。

注意:只有先 $user->auto($auto)->validate($validate)->create()生成对象,这样才支持自动验证.

然后date数组要保留,因为像我做的这个注册,如果不用date单独从post数组中抽出来。

user->add();是不成功的,他默认是post的数据,有了date数组,应该添加的是date数组,放在controller里面一切正常上代码:

  1.  $user=D('User'); 
  2. $data['username']=$_POST['username']; 
  3. $data['password']=$_POST['password']; 
  4. $data['email']=$_POST['email']; 
  5. $validate=array
  6. array('username','require','用户名不能为空',1), 
  7. array('username','','用户名已经存在',1,'unique',1), 
  8. array('confirm_password','password','确认密码不正确',0,'confirm'), 
  9. ); 
  10. $auto=array
  11. array('password','md5',1,'function'), 
  12. array('reg_time','time',1,'function'), 
  13. ); 
  14. if($user->auto($auto)->validate($validate)->create()) 
  15.  
  16. $user->add(); 
  17. echo $user->getLastSql();exit
  18. else 
  19. $this->error($user->getError()); 

ajax验证,thinkphp中$.post方式验证用户名存在还是不存在,实例代码如下:

$.post('__URL__/checks',{'username':s,'aa':'bb'},function(data){

alert(data.data.info);

});

php代码如下:

  1. $user=D('User'); 
  2.   if($user->getByUsername($_POST['username'])) 
  3. //info 
  4.        //$this->success('已经存在用户名','1111'); 
  5.        $this->ajaxReturn(array('info'=>'cunzai','sss'=>'dddd'),"已经存在!",1);   
  6.       //这里用 success方法和 ajaxReturn有很大的区别。 ajaxReturn里面可以返回自定义设置。success方式固定返回的参数 
  7.  
  8.  } 
  9.  else  
  10.  { 
  11.   $this->error('不存在用户名'); 
  12.  
  13.  } 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选