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($className); } public function tablename() { return '{{auth}}'; } }

注:我的用户表是auth,所以模型是Auth.php

php;"> !CCaptcha::checkrequirements(),'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_NONE) { $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,'a_password'); ?> passwordField($model,'a_password'); ?> error($model,'a_password'); ?>
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->userName)); 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,请注明来意。