首页 > 开发 > PHP > 正文

Yii框架实现的验证码、登录及退出功能示例

2024-05-04 22:47:30
字体:
来源:转载
供稿:网友

本文实例讲述了Yii框架实现的验证码、登录及退出功能。分享给大家供大家参考,具体如下:

捣鼓了一下午,总算走通了,下面贴出代码。

Model

<?phpclass Auth extends CActiveRecord {  public static function model($className = __CLASS__) {    return parent::model($className);  }  public function tableName() {    return '{{auth}}';  }}

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

<?phpclass IndexForm extends CFormModel {  public $a_account;  public $a_password;  public $rememberMe;  public $verifyCode;  public $_identity;  public function rules() {    return array(      array('verifyCode', 'captcha', 'allowEmpty' => !CCaptcha::checkRequirements(), 'message'=>'请输入正确的验证码'),      array('a_account', 'required', 'message' => '用户名必填'),      array('a_password', 'required', 'message' => '密码必填'),      array('a_password', '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

<?phpclass IndexController extends Controller {  public function actions() {    return array(      'captcha' => array(        'class' => 'CCaptchaAction',        'width'=>100,        'height'=>50      )    );  }  public function actionLogin() {    if (Yii::app()->user->id) {      echo "<div>欢迎" . Yii::app()->user->id . ",<a href='" . SITE_URL . "admin/index/logout'>退出</a></div>";    } else {      $model = new IndexForm();      if (isset($_POST['IndexForm'])) {        $model->attributes = $_POST['IndexForm'];        if ($model->validate() && $model->login()) {          echo "<div>欢迎" . Yii::app()->user->id . ",<a href='" . SITE_URL . "admin/index/logout'>退出</a></div>";exit;        }      }      $this->render('login', array('model' => $model));    }  }  public function actionLogout() {    Yii::app()->user->logout();    $this->redirect(SITE_URL . 'admin/index/login');  }}            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表