Why I Could Not Loging-In ?

Hi, I am having trouble why is it I could not loging-in ?can you help me on this please…

Thank you in advance.




<?php


class MysiteController extends Controller

{

   public $defaultAction = 'myindex';




    public function actionMyindex()

	{

		$this->renderPartial('myindex');

	}





    /**

     * Displays the login page

     */

    public function actionLogin()

    {

        $model= new MyLoginForm;


        // if it is ajax validation request

        if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')

        {

            echo CActiveForm::validate($model);

            Yii::app()->end();

        }


        // collect user input data


        if(isset($_POST['MyLoginForm']))

        {


            $model->attributes=$_POST['MyLoginForm'];

            // validate user input and redirect to the previous page if valid


            if($model->validate() && $model->login()){

             

                $this->redirect('/index.php?r=mysite/mynewpage');

            }


        }

        // display the login form


        $this->renderPartial('myindex',array('model'=>$model));

    }





    public function actionMyNewpage(){

        $this->renderPartial('mynewpage');

    }




	// Uncomment the following methods and override them if needed

	/*

	public function filters()

	{

		// return the filter configuration for this controller, e.g.:

		return array(

			'inlineFilterName',

			array(

				'class'=>'path.to.FilterClass',

				'propertyName'=>'propertyValue',

			),

		);

	}


	public function actions()

	{

		// return external action classes, e.g.:

		return array(

			'action1'=>'path.to.ActionClass',

			'action2'=>array(

				'class'=>'path.to.AnotherActionClass',

				'propertyName'=>'propertyValue',

			),

		);

	}

	*/

}




Model ->MyLoginForm.php




<?php


/**

 * LoginForm class.

 * LoginForm is the data structure for keeping

 * user login form data. It is used by the 'login' action of 'SiteController'.

 */

class MyLoginForm extends CFormModel

{

	public $username;

	public $password;

	public $rememberMe;


	private $_identity;


	/**

	 * Declares the validation rules.

	 * The rules state that username and password are required,

	 * and password needs to be authenticated.

	 */

	public function rules()

	{

		return array(

			// username and password are required

			array('username, password', 'required'),

			// rememberMe needs to be a boolean

			//array('rememberMe', 'boolean'),

			// password needs to be authenticated

			array('password', 'authenticate'),

		);

	}


	/**

	 * Declares attribute labels.

	 */

	public function attributeLabels()

	{

		return array(

			'rememberMe'=>'Remember me next time',

		);

	}


	/**

	 * Authenticates the password.

	 * This is the 'authenticate' validator as declared in rules().

	 */

	public function authenticate($attribute,$params)

	{


        if(!$this->hasErrors())

		{


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

			if(!$this->_identity->authenticate())

				$this->addError('password','Incorrect username or password.');

		}

	}


	/**

	 * Logs in the user using the given username and password in the model.

	 * @return boolean whether login is successful

	 */

	public function login()

	{

		if($this->_identity===null)

		{

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

			$this->_identity->authenticate();

		}

		if($this->_identity->errorCode===UserIdentity::ERROR_NONE)

		{

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

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

			return true;

		}

		else

			return false;

	}




    public function validatePassword($password)

    {


        return $this->hashPassword($password)===$this->password;

    }

}






model -> User.php




<?php


/**

 * This is the model class for table "user".

 *

 * The followings are the available columns in table 'user':

 * @property integer $id

 * @property string $username

 * @property string $password

 */

class User extends CActiveRecord

{

	/**

	 * @return string the associated database table name

	 */

	public function tableName()

	{

		return 'user';

	}


	/**

	 * @return array validation rules for model attributes.

	 */

	public function rules()

	{

		// NOTE: you should only define rules for those attributes that

		// will receive user inputs.

		return array(

			array('username', 'length', 'max'=>50),

			array('password', 'length', 'max'=>250),

			// The following rule is used by search().

			// @todo Please remove those attributes that should not be searched.

			array('id, username, password', 'safe', 'on'=>'search'),

		);

	}


	/**

	 * @return array relational rules.

	 */

	public function relations()

	{

		// NOTE: you may need to adjust the relation name and the related

		// class name for the relations automatically generated below.

		return array(

		);

	}


	/**

	 * @return array customized attribute labels (name=>label)

	 */

	public function attributeLabels()

	{

		return array(

			'id' => 'ID',

			'username' => 'Username',

			'password' => 'Password',

		);

	}


	/**

	 * Retrieves a list of models based on the current search/filter conditions.

	 *

	 * Typical usecase:

	 * - Initialize the model fields with values from filter form.

	 * - Execute this method to get CActiveDataProvider instance which will filter

	 * models according to data in model fields.

	 * - Pass data provider to CGridView, CListView or any similar widget.

	 *

	 * @return CActiveDataProvider the data provider that can return the models

	 * based on the search/filter conditions.

	 */

	public function search()

	{

		// @todo Please modify the following code to remove attributes that should not be searched.


		$criteria=new CDbCriteria;


		$criteria->compare('id',$this->id);

		$criteria->compare('username',$this->username,true);

		$criteria->compare('password',$this->password,true);


		return new CActiveDataProvider($this, array(

			'criteria'=>$criteria,

		));

	}


	/**

	 * Returns the static model of the specified AR class.

	 * Please note that you should have this exact method in all your CActiveRecord descendants!

	 * @param string $className active record class name.

	 * @return User the static model class

	 */

	public static function model($className=__CLASS__)

	{

		return parent::model($className);

	}




    /**

     * Checks if the given password is correct.

     * @param string the password to be validated

     * @return boolean whether the password is valid

     */




    public function validatePassword($password)

    {

        return $this->hashPassword($password)===$this->password;

    }

}




views [folder]

-mysite [folder]

 -myindex.php



<div class="container">

    <div class="row">

        <div class="col-md-4 col-md-offset-4">

            <div class="login-panel panel panel-default">

                <div class="panel-heading">

                    <h3 class="panel-title">Please Sign In</h3>

                </div>

                <div class="panel-body">

                    <form role="form" id="login-form" name="LoginForm" action="<?php echo Yii::app()->request->baseUrl; ?>/index.php?r=mysite/login" method="post">

                        <fieldset>

                            <div class="form-group">

                                <input class="form-control" placeholder="Username" name="username" type="text" autofocus>

                            </div>

                            <div class="form-group">

                                <input class="form-control" placeholder="Password" name="password" type="password" value="">

                            </div>

                            <div class="checkbox">

                                <label>

                                    <input name="remember" type="checkbox" value="Remember Me">Remember Me

                                </label>

                            </div>

                            <!-- Change this to a button or input when using this as a form -->

                           <!-- <a href="<?php echo Yii::app()->request->baseUrl; ?>/index.php?r=mysite/login" class="btn btn-lg btn-success btn-block">Login</a>-->

                            <input type="submit" value="Login" name="MyLoginForm" class="btn btn-lg btn-success btn-block" >

                        </fieldset>

                    </form>

                </div>

            </div>

        </div>

    </div>

</div>






your $model->attributes is empty.

you can check it by


echo "<pre>";print_r($model->attributes);die;

Quick fix

change the name of fileds from

username to MyLoginForm[username]

password to MyLoginForm[password]

remember to MyLoginForm[remember]

Hi I am confuse which file should i change is that in the controller ?