PHP
发布时间:2019-11-11 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Yii框架实现的验证码、登录及退出功能示例,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
本文实例讲述了Yii框架实现的验证码、登录及退出功能。分享给大家供大家参考,具体如下:
捣鼓了一下午,总算走通了,下面贴出代码。
@H_133_0
@model
php;">
php
class Auth extends CActiveRecord
{
public static function model($className = __CLASS__)
{
return parent::model($class
Name);
}
public function tabl
ename()
{
return '
{{auth}}';
}
}
注:我的用户表是auth,所以模型是Auth.php
php;">
!CCaptcha::
check
requirements(),'
message'=>'请输入正确的验证码'),array('a_account','
required','
message' => '用户名必填'),array('a
_password','
message' => '密码必填'),'authenticate'),array('rememberMe','
Boolean'),
);
}
public function authenticate($attribute,$params)
{
if (!$this->hasErrors())
{
$this->_identity = new UserIdentity($this->a_account,$this->a
_password);
if (!$this->_identity->authenticate())
{
$this->addError('a
_password','用户名或密码不存在'
);
}
}
}
public function login()
{
if ($this->_identity === null)
{
$this->_identity = new UserIdentity($this->a_account,$this->a
_password);
$this->_identity->authenticate(
);
}
if ($this->_identity->errorCode === UserIdentity::ERROR_NON
E) {
$duration = $this->rememberMe ? 60*60*24*7 : 0;
Yii::app()->user->login($this->_identity,$duration
);
return true;
} else
{
return
false;
}
}
public function attributeLabels()
{
return array(
'a_account' => '用户名','a
_password' => '密码','rememberMe' => '记住登录状态','verifyCode' => '验证码'
);
}
}
注:IndexForm也可以写成LoginForm,只是系统内已经有了,我就没有替换它,同时注意看自己用户表的字段,一般是password和username,而我的是a_account和a_password
Controller
php;">
array(
'class' => 'CCaptchaAction','width'=>100,'height'=>50
)
);
}
public function actionLogin()
{
if (Yii::app()->user->id)
{
echo "
欢迎" . Yii::app()->user->id . ",
退出";
} else
{
$model = new IndexForm(
);
if (isset($_POST['IndexForm']))
{
$model->attributes = $_POST['IndexForm'];
if ($model->validate() && $model->login())
{
echo "
欢迎" . Yii::app()->user->id . ",
退出";exit;
}
}
$this->render('login',array('model' => $model)
);
}
}
public function actionLogout()
{
Yii::app()->user->logout(
);
$this->redirect(SITE_URL . 'admin/index/login'
);
}
}
注:第一个方法是添加验证码的
view
php;">
http-equiv="content-type" content="text/html;charset=utf-8">
beginWidget('CActiveForm',array(
'id' => 'login-form','enableClientValidation' => true,'clientOptions' => array(
'validateOnSubmit' => true
)
)
);
?>
labelEx($model,'a_account'
); ?>
textField($model,'a_account'
); ?>
error($model,'a_account'
); ?>
labelEx($model,'verifyCode'
); ?>
widget('CCaptcha'
); ?>
textField($model,'verifyCode'
); ?>
error($model,'verifyCode'
); ?>
checkBox($model,'rememberMe'
); ?>
label($model,'rememberMe'
); ?>
error($model,'rememberMe'
); ?>
endWidget(
); ?>
同时修改项目下protected/components下的UserIdentity.php
php;">
password
'demo'=>'demo','admin'=>'admin',
);
if(!isset($users[$this->username]))
$this->errorCode=self::ERROR_USERNAME_INVALID;
elseif($users[$this->username]
!==$this->
password)
$this->errorCode=self::ERROR
_password_INVALID;
else
$this->errorCode=self::ERROR_NONE;
return !$this->errorCode;
*/
$
user_R_575_11845@odel = Auth::model()->find('a_account=:name',array(':name'=>$this->user
Name));
if($
user_R_575_11845@odel === null)
{
$this -> errorCode = self::ERROR_USERNAME_INVALID;
return
false;
} else if ($
user_R_575_11845@odel->a
_password !== md5($this ->
password))
{
$this->errorCode=self::ERROR
_password_INVALID;
return
false;
} else
{
$this->errorCode=self::ERROR_NONE;
return true;
}
}
}
更多关于Yii相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于Yii框架的php程序设计有所帮助。
大佬总结
以上是大佬教程为你收集整理的Yii框架实现的验证码、登录及退出功能示例全部内容,希望文章能够帮你解决Yii框架实现的验证码、登录及退出功能示例所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。