1、首先在mysql创建一个存用户的表格

create table test_user
(
user_id bigint(20) unsigned not null auto_increment comment 'ID',
user_email varchar(100) not null comment '电子邮件',
user_password varchar(100) not null comment '密码',
user_access_token varchar(200) comment 'access_token',
user_auth_key varchar(200) comment 'auth_key',
user_create_time datetime comment '创建时间',
primary key(user_id)
);

2、在表中插入一条登陆的账号

3、新建模型models/MysqlUser.php

<?phpnamespace app\models;use yii\db\ActiveRecord;
use yii\web\IdentityInterface;class MysqlUser extends ActiveRecord implements IdentityInterface
{public static function tableName(){//对应的表名return 'test_user';}public static function findIdentity($id){//自动登陆时会调用$temp = parent::find()->where(['user_id'=>$id])->one();return isset($temp)?new static($temp):null;}public static function findIdentityByAccessToken($token, $type = null){return static::findOne(['user_access_token' => $token]);}public function getId(){return $this->user_id;}public function getAuthKey(){return $this->user_auth_key;}public function validateAuthKey($authKey){return $this->user_auth_key === $authKey;}public function validatePassword($password){return $this->user_password === $password;}
}

4、新建模型models/MloginForm.php

<?phpnamespace app\models;use Yii;
use yii\base\Model;//加上这一句,引用
use app\models\MysqlUser;class MloginForm extends Model
{public $email;public $password;private $_user = false;public function rules(){return [['email','email','message'=>'必须是邮件格式'],[['email','password'],'required','message'=>'必填'],['password','validatePassword','message'=>'账号或密码不正确'],];}//登陆public function login(){if ($this->validate())return Yii::$app->user->login($this->getUser(), 3600*24*30);elsereturn false;}//判断账号密码是否正确public function validatePassword($attribute, $params){if (!$this->hasErrors()) {$user = $this->getUser();if (!$user){$this->addError($attribute, '账号或密码不正确');}}}//根据邮箱和密码查询数据库public function getUser(){if ($this->_user === false){$this->_user = MysqlUser::find()->where(['user_email'=>$this->email,'user_password'=>$this->password])->one();}return $this->_user;}}?>

5、新建视图views/account/login.php

<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
?>
<?php
echo '<h1>'.$status.'</h1>';
?>
<?php $form = ActiveForm::begin(); ?>
<?php echo $form->field($model, 'email'); ?>
<?php echo $form->field($model, 'password'); ?>
<?php echo Html::submitButton('登陆'); ?>
<?php ActiveForm::end(); ?>

6、新建控制器controllers/AccountController.php

<?php
namespace app\controllers;use Yii;
use yii\filters\AccessControl;
use yii\web\Controller;
use yii\filters\VerbFilter;//引用
use app\models\MloginForm;class AccountController extends Controller
{function actionLogin(){$model = new MloginForm();if($model->load(Yii::$app->request->post())){if($model->login())//登陆成功return $this->renderPartial('login',['model'=>$model,'status'=>'成功']);else//登陆失败return $this->renderPartial('login',['model'=>$model,'status'=>'失败']);}else{return $this->renderPartial('login',['model'=>$model,'status'=>'']);}}
}

另外,自动登陆配置的地方是config/web.php

效果如下所示

点击登陆按钮后

若账号密码不正确

自动登陆还有点问题,等之后解决。

转载请注明出处:http://blog.csdn.net/zhyoulun/article/details/40687545

Yii Framework2.0开发教程(10)配合mysql数据库实现用户登录相关推荐

  1. Yii Framework2.0开发教程(5)数据库mysql性能

    继续<Yii Framework2.0开发教程(3)数据库mysql入门> 首先给予一定的尊重yii2数据库支持引进 Yii 基于 PHP's PDO一个成熟的数据库访问层的建立.它提供了 ...

  2. wxpython配合MySQL数据库完成用户登录页面的设计

    文章目录 一.创建user表 2.给表添加数据 3.利用wxpython创建登录界面 4.执行结果如图 一.创建user表 # -*- coding: utf-8 -*- ""&q ...

  3. 用python和mysql做注册登录系统_python3.6 下连接mysql数据库实现用户登录与注册

    在python3.6中连接数据库只能使用pymysql包,安装方法直接通过pip install pymysql安装即可,较为方便. 初学者一定要做的便是用户的注册与登录,同时牵涉到数据库的相关操作, ...

  4. MySQL数据库修改用户登录密码的三种方式

    文章目录 一.更新 mysql.user 表 二.用 set password 命令 三.使用 mysqladmin 命令 提醒:MYSQL5.7 版本后不再支持password()函数和passwo ...

  5. 3.9 haas506 2.0开发教程-example-oled

    haas506 2.0开发教程-example-oled 1.OLED模块 2.测试 3.效果 4.总结 1.OLED模块 有机发光二极管(OrganicLight-Emitting Diode,OL ...

  6. 3.2 haas506 2.0开发教程-example-wifi定位

    haas506 2.0开发教程-example-wifi定位 wifi定位 1.案例说明 2.程序代码 3.日志输出 总结 wifi定位 1.案例说明 扫描周围所得到的wifi热点,使用mac地址进行 ...

  7. MeeGo 开发指南 1.0 开发教程

    MeeGo 开发指南 1.0 开发教程 转自: MeeGo中文 介绍 如果想获取MeeGo平台的开发概览,最好地方的是MeeGo developers.这里讨论的是一些更细节化的问题,比如MeeGo ...

  8. 1.1 haas506 2.0开发教程-导学篇

    haas506 2.0开发教程-导学篇 一. 下载并安装驱动 1.1 CH340 driver 1.2 8910 driver 二. 搭建开发环境 2.0 集合开发工具HaaS506PYcom 2.1 ...

  9. 2.19 haas506 2.0开发教程 - bluetooth - 蓝牙通信(仅支持2.2以上版本)

    haas506 2.0开发教程 - bluetooth - 蓝牙通信 蓝牙 案例说明 从机测试(支持601与320) 1. 蓝牙调试工具 2. 设备端开发 3. 功能测试 主机测试(仅支持320) 1 ...

  10. haas506 2.0开发教程-hota(仅支持2.2以上版本)

    haas506 2.0开发教程-hota 1.hota.py升级 案例说明 (1)获取URL (2)功能代码 (3)输出log 2.hota.pac升级 案例说明 (1)获取URL (2)功能代码 ( ...

最新文章

  1. 深入理解jQuery的Event机制
  2. 前段框架——VueX
  3. 一点MATLAB程序加速技巧
  4. 我的世界拿java开服务器_我的世界如何开服务器
  5. JSONPATH使用方法
  6. 模块-基本概念和import导入复习
  7. linux fstream open,fstream创建文件的问题
  8. linux c 禁止对外通信,Linux C套接字:在recv调用时被阻止
  9. 商城系统php功能模块,yershop商城系统的支付模块问题
  10. 小程序商店刷榜_APP推广人必看|全球刷榜价格表单
  11. 代码组织和部署 文件操作 node.js 1
  12. UTF-8 和 Unicode 的区别
  13. 基于matlab的声音个数识别
  14. Comsol学习——经典案例:散热器的冷却性能
  15. PCB设计中基板颜色含义
  16. sqli-labs(46-49)
  17. P3239 [HNOI2015]亚瑟王
  18. Unity Editor 编辑器扩展 五 EditorGUI
  19. 硬件防火墙和软件防火墙的比较
  20. 有赞.测试团队介绍(转)

热门文章

  1. android tab 选中变色,Android 底部导航栏的Tab选中不变色?
  2. java hex to ascii_使用java实现hex和ascii码的转换
  3. qrect在图片上显示矩形框_Mac上用LabelImg手动标记图片
  4. oracle相同sql执行计划不同,相同的SQL 在正式和测试环境中执行计划的不同
  5. oracle系统物料事务处理类型,Oracle_EBS_斌力十足系列_INV库存模块操作手册_杂项事务处理的分类和实际业务的应用场景专题研究报告...
  6. android签名打包v1和v2的区别
  7. HTTP和HTTPS及 Fiddler抓包原理
  8. Dubbo/ Spring Cloud 分布式事务管理 LCN方式
  9. Linux系统控制文件 /etc/sysctl.conf详解
  10. 连接mongoDB根据ObjectID写入json数据(初步)