zcyxm 2012-05-17 11:35:33 3836次浏览 5条回复 0 0 0
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 :)

  • 回复于 2012-05-17 12:02 举报

    在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’,你的如果是其他改改就好。

  • 回复于 2012-05-17 12:58 举报

    刚吃饭去了,谢谢,学到了很多

    如果您有时间的话,可以给我说说控制器里面的 public function accessRules(){} 如果可以的话,把您的贴给我看看。最好能注释一下是啥意思唔。感激不尽

  • 回复于 2012-05-17 13:40 举报

    accessRules我没搞明白呢,一直关注rbac没弄清楚,所以没看accessRules。

  • 回复于 2012-05-21 15:55 举报

    为了使登录的用户不能注册,可以用个判断如果用户没有登录就显示注册链接,否则不显示

  • 回复于 2012-05-21 16:20 举报

    这样不能控制别人直接通过url来访问

您需要登录后才可以回复。登录 | 立即注册