用户登录的一个问题。

;D 我又来了。

首先,用户登录验证这块之前已经是正确了的。包括了:1.正常登陆。2.密码错误。3.用户帐号已经被锁定。这三种情况的判断。但最近偶然输错密码,发现,密码错误后就出错了,显示空白页面。找了半天也找不出原因,也不确定是不是因为从1.02换成1.03造成的。我把几个代码贴一下,麻烦强帮我看看。(现在仅self::ERROR_USERNAME_INVALID报错正常,其他都会显示空白页面。)

UserIdentity.php:

<?php 


public function authenticate()


	{    


   $record=user::model()->findByAttributes(array('userlogin'=>$this->username));       


        if($record===null){


            $this->errorCode=self::ERROR_USERNAME_INVALID;


        }  


        else if($record->userpassword!==md5($this->password))


        {


            $this->errorCode=self::ERROR_PASSWORD_INVALID;


        }


        else if($record->userlock===1)  


        {


            $this->errorCode=self::ERROR_USER_LOCKED;


        }    


        else


        {   


            $this->setState('usernum',$record->usernum);


            $this->errorCode=self::ERROR_NONE;


        }


        return !$this->errorCode;


    }


?>

LoginForm.php



<?php


if(!$this->hasErrors())  // we only want to authenticate when no input errors


		{


			$identity=new UserIdentity($this->username,$this->password);


			$identity->authenticate();


            switch($identity->errorCode)


            {


                case UserIdentity::ERROR_NONE:


                    $duration=$this->rememberMe ? 3600*24*30 : 0; // 30 days


                    Yii::app()->user->login($identity,$duration);


                    break;


                case UserIdentity::ERROR_USERNAME_INVALID:


                    $this->addError('username','用户名不存在.');


                    break;


                case UserIdentity::ERROR_USER_LOCKED:


                    $this->addError('username','该账户已被冻结.');


                    break;    


                default: //UserIdentity::ERROR_PASSWORD_INVALID:


                    $this->addError('password','密码错误.');


                    break;


            }


?>

你有没有把PHP的出错显示打开?log里有什么异常么?

没。我开了看下。

Fatal error: Undefined class constant 'ERROR_USER_LOCKED' in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\protected\models\LoginForm.php on line 48

edit:

注释掉了这个报错信息后,正确了。那就是我之前增加报错信息的时候写到了yii里面的框架文件里去了。然后升级1.03之后,那个文件恢复到默认了,所以找不到这个报错信息了。@@ 呵呵

应该是怎么增加报错的类别的?

你需要定义这个常量……

嘿嘿~~ 见笑了。终于搞定。谢谢强。 ;D