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');
}

 

posted on 2016-02-09 23:07  ultrastrong  阅读(493)  评论(0编辑  收藏  举报