Yii Framework2.0开发教程(10)配合mysql数据库实现用户登录
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数据库实现用户登录相关推荐
- Yii Framework2.0开发教程(5)数据库mysql性能
继续<Yii Framework2.0开发教程(3)数据库mysql入门> 首先给予一定的尊重yii2数据库支持引进 Yii 基于 PHP's PDO一个成熟的数据库访问层的建立.它提供了 ...
- wxpython配合MySQL数据库完成用户登录页面的设计
文章目录 一.创建user表 2.给表添加数据 3.利用wxpython创建登录界面 4.执行结果如图 一.创建user表 # -*- coding: utf-8 -*- ""&q ...
- 用python和mysql做注册登录系统_python3.6 下连接mysql数据库实现用户登录与注册
在python3.6中连接数据库只能使用pymysql包,安装方法直接通过pip install pymysql安装即可,较为方便. 初学者一定要做的便是用户的注册与登录,同时牵涉到数据库的相关操作, ...
- MySQL数据库修改用户登录密码的三种方式
文章目录 一.更新 mysql.user 表 二.用 set password 命令 三.使用 mysqladmin 命令 提醒:MYSQL5.7 版本后不再支持password()函数和passwo ...
- 3.9 haas506 2.0开发教程-example-oled
haas506 2.0开发教程-example-oled 1.OLED模块 2.测试 3.效果 4.总结 1.OLED模块 有机发光二极管(OrganicLight-Emitting Diode,OL ...
- 3.2 haas506 2.0开发教程-example-wifi定位
haas506 2.0开发教程-example-wifi定位 wifi定位 1.案例说明 2.程序代码 3.日志输出 总结 wifi定位 1.案例说明 扫描周围所得到的wifi热点,使用mac地址进行 ...
- MeeGo 开发指南 1.0 开发教程
MeeGo 开发指南 1.0 开发教程 转自: MeeGo中文 介绍 如果想获取MeeGo平台的开发概览,最好地方的是MeeGo developers.这里讨论的是一些更细节化的问题,比如MeeGo ...
- 1.1 haas506 2.0开发教程-导学篇
haas506 2.0开发教程-导学篇 一. 下载并安装驱动 1.1 CH340 driver 1.2 8910 driver 二. 搭建开发环境 2.0 集合开发工具HaaS506PYcom 2.1 ...
- 2.19 haas506 2.0开发教程 - bluetooth - 蓝牙通信(仅支持2.2以上版本)
haas506 2.0开发教程 - bluetooth - 蓝牙通信 蓝牙 案例说明 从机测试(支持601与320) 1. 蓝牙调试工具 2. 设备端开发 3. 功能测试 主机测试(仅支持320) 1 ...
- haas506 2.0开发教程-hota(仅支持2.2以上版本)
haas506 2.0开发教程-hota 1.hota.py升级 案例说明 (1)获取URL (2)功能代码 (3)输出log 2.hota.pac升级 案例说明 (1)获取URL (2)功能代码 ( ...
最新文章
- 深入理解jQuery的Event机制
- 前段框架——VueX
- 一点MATLAB程序加速技巧
- 我的世界拿java开服务器_我的世界如何开服务器
- JSONPATH使用方法
- 模块-基本概念和import导入复习
- linux fstream open,fstream创建文件的问题
- linux c 禁止对外通信,Linux C套接字:在recv调用时被阻止
- 商城系统php功能模块,yershop商城系统的支付模块问题
- 小程序商店刷榜_APP推广人必看|全球刷榜价格表单
- 代码组织和部署 文件操作 node.js 1
- UTF-8 和 Unicode 的区别
- 基于matlab的声音个数识别
- Comsol学习——经典案例:散热器的冷却性能
- PCB设计中基板颜色含义
- sqli-labs(46-49)
- P3239 [HNOI2015]亚瑟王
- Unity Editor 编辑器扩展 五 EditorGUI
- 硬件防火墙和软件防火墙的比较
- 有赞.测试团队介绍(转)
热门文章
- android tab 选中变色,Android 底部导航栏的Tab选中不变色?
- java hex to ascii_使用java实现hex和ascii码的转换
- qrect在图片上显示矩形框_Mac上用LabelImg手动标记图片
- oracle相同sql执行计划不同,相同的SQL 在正式和测试环境中执行计划的不同
- oracle系统物料事务处理类型,Oracle_EBS_斌力十足系列_INV库存模块操作手册_杂项事务处理的分类和实际业务的应用场景专题研究报告...
- android签名打包v1和v2的区别
- HTTP和HTTPS及 Fiddler抓包原理
- Dubbo/ Spring Cloud 分布式事务管理 LCN方式
- Linux系统控制文件 /etc/sysctl.conf详解
- 连接mongoDB根据ObjectID写入json数据(初步)