Yii 登录表单模型的简单操作

前端控制器

MyAdminController.php文件

class MyAdminController extends Controller{
    
    public function actionLogin(){
        $model = new MyAdminLogin();
        if( isset($_POST['MyAdminLogin']) ){
    
            $model->attributes = $_POST['MyAdminLogin'];
            if( $model->validate() && $model->login() ){
                //页面跳转
                //$this->redirect(Yii::app()->user->returnUrl);
                //显示登录信息
                echo "登录成功";
                exit;    
            }else{
                echo "登录失败";
                exit;    
            }    
        }    
        $this->render('login',array('model'=>$model));
    }
    
        
}

控制器里面的login方法对应的视图文件

login.php

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php $form = $this->beginWidget('CActiveForm',
			array(
			'id'=>'myAdminLogin',
			'enableAjaxValidation'=>true,
			'enableClientValidation'=>true)
			);
?>
<div><?php echo $form->errorSummary($model);?></div>
<div><?php echo $form->labelEx($model,'username')?></div>
<div><?php echo $form->textField($model,'username')?></div>
<div><?php echo $form->error($model,'username')?></div>
<div></div>
<div><?php echo $form->labelEx($model,'password')?></div>
<div><?php echo $form->passwordField($model,'password')?></div>
<div><?php echo $form->error($model,'password')?></div>
<div></div>
<div><?php echo $form->checkBox($model,'rememberMe')?></div>
<div><?php echo $form->labelEx($model,'rememberMe')?></div>
<div><?php echo $form->error($model,'rememberMe')?></div>
<div><?php echo CHtml::submitButton('登录')?></div>
<?php $this->endWidget();?>

表单模型

 MyAdminLogin.php

<?php
class MyAdminLogin extends CFormModel{
	
	public $username;
	public $password;
	public $rememberMe;
	
	private $_identity;
	
	public function rules(){
		
		return array(
		array('username, password', 'required'),
		array('username','length','min'=>5,'max'=>12),
		array('rememberMe','boolean'),
		array('password','authenticate'),
		);
	} 

	public function attributeLabels(){
		return array(
			'username'=>'用户名',
			'password'=>'密码',
			'rememberMe'=>'记住'
		);
	}
	
	
	public function authenticate(){
		$this->_identity=new MyUserIdentity($this->username,$this->password);
		if(!$this->_identity->authenticate())
		$this->addError('password','用户名或者密码不正确!');
	}
	
	
	public function login(){
		if( $this->_identity == NULL ){
			$this->authenticate();
		}
		
		if( $this->_identity->errorCode == MyUserIdentity::ERROR_NONE){
			
			$duration = $this->rememberMe?3600*24:0;
			Yii::app()->user->login($this->_identity,$duration); //保存用户信息 当 $duration大于0时 为cookie形式
			Yii::app()->user->guestName='admin'; //用户类型设置
			Yii::app()->user->returnUrl = '/fuyangclj/index.php?r'; //跳转地址
			return true;
		}else{
			return false;	
		}
			
	}
}

在表单模型里面用到的  用户认证类

MyUserIdentity.php 这个文件 放在 protected/components文件夹下面

class MyUserIdentity extends CUserIdentity{
	
	public function authenticate(){
		
		//调用数据库查询是否存在
		
		$userInfo = TblAdmin::model()->find('username=:username',array(':username'=>$this->username));
		
		if( $userInfo == NULL ){
			$this->errorCode=self::ERROR_USERNAME_INVALID;
		}elseif( $userInfo->validationPassword($this->password) ){
			$this->errorCode=self::ERROR_PASSWORD_INVALID;
		}else{
			$this->errorCode=self::ERROR_NONE;
		}
	
		return !$this->errorCode;
	}
}

登录用户模型

TblAdmin.php

class TblAdmin extends CActiveRecord{
	
	
	public static function model($className=__CLASS__){
		return parent::model($className);
	}

		
	public function tableName(){
		return 'tbl_admin';
	}
	
	
	public function validationPassword($password){
		if( $this->password == $password ){
			return true;
		}else{
			return false;	
		}	
	}
}



数据库信息


--
-- 表的结构 `tbl_admin`
--

CREATE TABLE IF NOT EXISTS `tbl_admin` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `password` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci  ;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值