前端控制器
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 ;