数据库:
/* 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'); }