求助--关于注册确认密码的问题(已解决) [ 新手入门 ]
public function actionCreate(){
if (!Yii::app()->user->isGuest){
$this->redirect(array('site/index'));
exit();
}
$model = new Users();
if (isset($_POST['Users'])){
$user=Users::model()->findByAttributes(array('username'=>$_POST['Users']['username']));
if ($user === null){
$password = $_POST['Users']['password'];
$username = $_POST['Users']['username'];
$_POST['Users']['password'] = md5($password);
$model->attributes=$_POST['Users'];
$model->validate();
if ($model->save()){
$form = new LoginForm;
$form->username = $username;
$form->password = $password;
$form->login();
$this->redirect(array('index'));
exit();
}
}else {
$model->addError('username','邮箱 已被注册.');
}
}
$this->render('create',array('model'=>$model));
}
因为我不想存明文密码,所以md5了,但是我每次注册的时候,输入完了,显示的都是正确的,一点提交,就提示说 确认密码 必须被重复. models --Users里面[code]array('repassword', 'compare', 'compareAttribute'=>'password'),[/code]我想可能是因为我加了MD5所以导致了说确认密码和密码不一致。但是不知道如何解决好,求大大帮忙~~~
另外,我上面贴的那个action里面的
if (!Yii::app()->user->isGuest){
$this->redirect(array('site/index'));
exit();
}
是不是显得很山寨,为了防止已经登录的人在注册,是不是应该在
public function accessRules()
{}
里面写。如果是的,该怎么写?
感激不尽! thx :)
共 5 条回复
-
在UserModel里添加
public function encrypt($pass){ return md5($pass);//加密函数,可以自定义 } public function beforeSave() { if(parent::beforeSave()){ if($this->isNewRecord){ $this->login_pass= $this->encrypt($this->login_pass);//将密码存储为加密后的字符串 } return true; }else{ return false; } }
action里不要加密了,只判断两次密码是否一直,等入库时,这个beforeSave就会把密码存储为md5序列。
我这里用户密码字段为‘login_pass’,你的如果是其他改改就好。 -
flyingoneshjs 回复于 2012-05-21 15:55 举报
为了使登录的用户不能注册,可以用个判断如果用户没有登录就显示注册链接,否则不显示
zcyxm
注册时间:2012-05-11
最后登录:2021-04-11
在线时长:152小时12分
最后登录:2021-04-11
在线时长:152小时12分
- 粉丝18
- 金钱37226
- 威望60
- 积分39346