第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Yii 2.0 框架初學(xué)之實(shí)現(xiàn)登錄和注銷功能

標(biāo)簽:
PHP

继上篇实现注册功能之后,今天分享一下Yii2.0实现登录和注销功能

  • 需要先配置好数据库,并且数据库里有相应的用户注册信息

  • 在controller/siteController.php 控制器里定义并设置登录方法
/**
* @return string\yii\web\Response
* 显示登录页面
*/
public function actionLogin()
{
    if(!Yii::$app->user->isGuest)//如果是已注册则跳转到首页
    {

        return $this->goHome();
    }
    $model=new LoginForm();//实例化登录表单模型类

    if($model->load(Yii::$app->request->post()) && $model->login())
    {
        return $this->goHome();//如果登录成功则转到首页
    }else {

        return $this->render('login',['model'=>$model]);//登录不成功则显示登录界面,显示登录界面需要输出视图文件(见下面),并将配置模型
    }
}

    * 在models/LoginForm 模型类里写下以下代码和方法

namespace home\models;//home是我自己建的根目录文件夹

use Yii;
use yii\base\Model;

class LoginForm extends Model
{
    public $username;
    public $password;
    public $rememberMe;

/**
 * @inheritdoc
 * 设置表单字段的验证规则  
*/
    public function rules()
    {
        return [
            [['username', 'password'], 'required'],//设置字段不能为空
            ['rememberMe','boolean'],
        ];
    }

/**
* @inheritdoc
* 设置字段的标签命名
*/
    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'username' => '用户名',
            'password'=>'密码',
            'rememberMe'=>'记住我',
        ];
     }

/**
* @return bool
* 设置登录方法
*/
    public function login()
    {
        $user=User::findOne(['username'=>$this->username]);//判断用户名是否正确
        if(is_null($user))
        {
            Yii::$app->session->setFlash('错误提示','用户名输入有误');
//            echo $this->addError('username','用户名输入有误');
            return false;
        }
        else {
            if(Yii::$app->security->validatePassword($this->password, $user->password_hash))//判断密码是否正确
            {
                Yii::$app->user->login($user);//登录用户
                return true;
            }else
                {
                Yii::$app->session->setFlash('错误提示','密码输入有误');
//                echo $this->addError('password','密码输入有误');
                return false;
                }
             }
    }
}
  • 在models/LoginForm 模型类里写下以下代码和方法
namespace home\models;//home是我自己建的根目录文件夹

use Yii;
use yii\base\Model;

class LoginForm extends Model
{
    public $username;
    public $password;
    public $rememberMe;

/**
 * @inheritdoc
 * 设置表单字段的验证规则  
*/
    public function rules()
    {
        return [
            [['username', 'password'], 'required'],//设置字段不能为空
            ['rememberMe','boolean'],
        ];
    }

/**
* @inheritdoc
* 设置字段的标签命名
*/
    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'username' => '用户名',
            'password'=>'密码',
            'rememberMe'=>'记住我',
        ];
     }

/**
* @return bool
* 设置登录方法
*/
    public function login()
    {
        $user=User::findOne(['username'=>$this->username]);//判断用户名是否正确
        if(is_null($user))
        {
            Yii::$app->session->setFlash('错误提示','用户名输入有误');
            return false;
        }
        else {
            if(Yii::$app->security->validatePassword($this->password, $user->password_hash))//判断密码是否正确
            {
                Yii::$app->user->login($user);//登录用户
                return true;
            }else
                {
                Yii::$app->session->setFlash('错误提示','密码输入有误');
                return false;
                }
             }
    }
}
  • 在对于LoginForm模型类的设置里,需要用User 模型类对针对用户的数据库操作进行设置
User模型类可用Gii进行生成

namespace home\models;

use yii\db\ActiveRecord;
use yii\web\IdentityInterface;

class User extends ActiveRecord implements IdentityInterface
{
    public static function findIdentity($id)
    {
        return static::findOne($id);// 找到用户登录id
    }

    public static function findIdentityByAccessToken($token, $type = null)
    {
        // TODO: Implement findIdentityByAccessToken() method.
    }

    public function getId()
    {
    return $this->id;  // 返回用户id
    }

    public function getAuthKey()
    {
        // TODO: Implement getAuthKey() method.
    }

    public function validateAuthKey($authKey)
    {
        // TODO: Implement validateAuthKey() method.
    }
}

-在view/site/文件夹下新建登录界面的视图文件login.php

<?php
use yii\widgets\ActiveForm;
use yii\bootstrap\Html;
?>
<div>
    <?php $form=ActiveForm::begin();//表单开始    ?>
    <?= $form->field($model,'username')->textInput(['autoFocus'=>'true','placeholder'=>'请输入账号']); ?>
    <?= $form->field($model,'password')->passwordInput(['placeholder'=>'请输入密码'])->label('请输入密码啦');?>
    <?= $form->field($model,'rememberMe')->checkbox(['label'=>'记住我']);?>
    <div class="form-group">
        <?= Html::submitButton('登录',['class'=>'btn btn primary','name'=>'login-button']);?>
    </div>
    <?php ActiveForm::end();?>
</div>
  • 实现注销功能,在siteController里设置注销方法
/**
* @return \yii\web\Response
* 注销方法
*/

public function actionLogout()
{
    Yii::$app->user->logout();//使用应用程序下面的logout()方法即可实现
    return $this->goBack();
}
  • 以上。本文涉及到的知识点有:
    1、Yii框架里的Yii::$app->user->isGuest 可对用户是否是游客进行判断。
    Yii::$app->user->login($user); //登录用户
    Yii::$app->user->logout(); //注销用户
    2、Yii::$app->session->setFlash('错误提示','用户名输入有误'); // 实现错误提示
    3、表单组件ActiveForm的使用
點(diǎn)擊查看更多內(nèi)容
8人點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消