ThinkPHP - 登录流程
数据库:
/*
Navicat MySQL Data Transfer Source Server : 本地连接
Source Server Version : 50710
Source Host : localhost:3306
Source Database : message Target Server Type : MYSQL
Target Server Version : 50710
File Encoding : 65001 Date: 2016-02-09 23:33:55
*/ SET FOREIGN_KEY_CHECKS=0; -- ----------------------------
-- Table structure for ms_user
-- ----------------------------
DROP TABLE IF EXISTS `ms_user`;
CREATE TABLE `ms_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(30) DEFAULT NULL,
`password` char(32) DEFAULT NULL,
`logintime` int(10) DEFAULT '1',
`loginip` varchar(30) DEFAULT NULL,
`lock` tinyint(1) DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
验证规则:
1、判断是否为POST提交
2、判断验证码是否正确
3、获取用户名,密码
4、根据用户名,密码查询数据库数据
5、判断用户是否锁住
6、更新登录时间,登录ip
7、存储session,id,username,logintime,loginip
8、跳转页面
代码:
/**
* 验证登录
*/
public function dologin(){
//是否非法操作
if ( !IS_POST ) $this->error('操作异常,请重新登录!'); //验证码是否正确
if ( I('code', '', 'md5') != $_SESSION['verify'] ) $this->error('验证码错误!'); //验证账号密码
$verifyData = array(
'username'=>I('username'),
'password'=>I('password', '', 'md5'),
);
if ( !$user = M('User')->where($verifyData)->find() ) $this->error('账号或密码错误!'); //判断用户是否锁定
if ( $user['lock'] == 1 ) $this->error('用户被锁定!'); //更新登录数据
$updateData = array(
'id' => $user['id'],
'logintime' => time(),
'loginip' => get_real_ip(),
);
if ( !$res = M('User')->save($updateData) ) $this->error('更新数据失败,请重新登录!'); //写入session
$_SESSION['id'] = $user['id'];
$_SESSION['username'] = $user['username'];
$_SESSION['logintime'] = $user['logintime'];
$_SESSION['loginip'] = $user['loginip'];
if ( !isset($_SESSION['id'])
|| !isset($_SESSION['username'])
|| !isset($_SESSION['logintime'])
|| !isset($_SESSION['loginip']) ) {
$this->error('操作异常,请重新登录!');
} //跳转页面
$this->redirect('/Admin/Index/index');
}
ThinkPHP - 登录流程的更多相关文章
- 如何设计一个 App 的注册登录流程?
移 动设备发力之前的登录方式很简单:用户名/邮箱+密码+确认密码,所有的用户登录注册都是围绕着邮箱来做.随着移动设备和社交网络的普及,邮箱不再是唯 一,渐渐的出现了微博,QQ,微信等第三方登录方式,手 ...
- 用户登录流程详解 +volley(StringRequest)
在实习期间由于要求使用volley,所以第一次开始接触volley,从一开始的迷茫陌生,到疯狂的查找各种资料,通过在项目中用到的实际问题,我想做一些总结,所以写了这篇文章.下面我将介绍我理解的用户登录 ...
- 二维码闪电登录流程详解,附demo(1/2)
二维码,最早发明于日本,它是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设 ...
- 微信小程序登录流程
小程序登录流程 参考 app.js需要做的 1,首先通过wx.login()拿到code,成功之后,发送数据,请求接口,把code发送给后端,换区openid,sessionKey,unionId,把 ...
- 小程序页面跳转传参-this和that的区别-登录流程-下拉菜单-实现画布自适应各种手机尺寸
小程序页面跳转传参 根目录下的 app.json 文件 页面文件的路径.窗口表现.设置网络超时时间.设置多 tab { "pages": [ "pages/index/i ...
- ThinkPHP登录功能的实现方法
登陆功能是PHP程序设计中常见的功能.本文ThinkPHP实例主要完成注册成功后进入首页,并告诉你是登录用户的功能.具体实现步骤如下: 第一步:在config.php文件中加上: 完整实现代码如下: ...
- Vue + Element UI 实现权限管理系统(优化登录流程)
完善登录流程 1. 丰富登录界面 1.1 从 Element 指南中选择组件模板丰富登录界面,放置一个登录界面表单,包含账号密码输入框和登录重置按钮. <template> <el- ...
- ASP.net 完整登录流程
登录流程 using System; using System.Collections.Generic; using System.Linq; using System.Web; using Syst ...
- Vue + Element UI 实现权限管理系统 前端篇(四):优化登录流程
完善登录流程 1. 丰富登录界面 1.1 从 Element 指南中选择组件模板丰富登录界面,放置一个登录界面表单,包含账号密码输入框和登录重置按钮. <template> <el- ...
随机推荐
- BZOJ 3612: [Heoi2014]平衡( dp )
枚举Fl, 就变成一个整数划分的问题了...f(i,j) = f(i-j,j-1)+f(i-j,j)-f(i-N-1,j-1)递推.f(i,j)表示数i由j个不同的数组成,且最大不超过N的方案数 -- ...
- c++ 简单的词法分析
scanner.h #include<iostream> #include<fstream> #include<string> using namespace st ...
- 我的Fedora环境
Fedora现在也更新到了第20个版本,只是在15+以后的版本,大多数操作,都是大同小异的,也不必特意去关注版本号,只有对应到具体的软件,可能会因为库的版本,有或多或少的区别. 之前每次都喜欢按照一些 ...
- HeapAnalyzer
https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=4544baf ...
- WEB和APP谁是互联网未来
据中国多家权威报告显示,作为多年专业化互联网公司炎帝网络科技综合评估预测,预计2016年全球互联网设备将达到100亿部.如果届时全球人口达到73亿,意味着平均每人将有1.4部设备.智能交通将增长50倍 ...
- Java集合框架的知识总结
说明:面试准备,写的挺不错的. 转载地址: http://www.cnblogs.com/zhxxcq/archive/2012/03/11/2389611.html 1.综述 所有集合类都位于jav ...
- 概率图模型(PGM)学习笔记(三)模式判断与概率图流
我们依旧使用"学生网络"作为样例,如图1. 图1 首先给出因果判断(Causal Reasoning)的直觉解释. 能够算出来 即学生获得好的推荐信的概率大约是0.5. 但假设我们 ...
- 「OC」类的深入研究、description方法和sel
一.类的深入研究 (一)类的本质 类本身也是一个对象,是class类型的对象,简称“类对象”. Class类型的定义: Typedef struct obj class *class; 类名就代表着类 ...
- STL之map和multimap(关联容器)
map是一类关联式容器.它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响.自动建立Key - value的对应,对于迭代器来说,可以修改实值,而不能修改key. ...
- myEclipse快捷键及其常用设置
快捷键: 查找替换:ctrl + f 复制行: ctrl + alt + down 删除行: ctrl + d 插入行: shift + enter, ctrl + shift ...