1.数据库设计
1 CREATE TABLE `smar_admin` (
2 `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
3 `username` varchar(30) NOT NULL,
4 `password` varchar(60) NOT NULL,
5 `save` varchar(6) NOT NULL,
6 `role_id` smallint(5) unsigned NOT NULL,
7 `timer` int(11) NOT NULL,
8 `uptimer` int(11) NOT NULL,
9 `lasttimer` int(11) NOT NULL,
10 `loginip` varchar(16) NOT NULL,
11 `status` tinyint(1) NOT NULL,
12 PRIMARY KEY (`id`)
13 ) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
2.思路
①:session 验证 验证码
②:从数据库中取出账号和密码进行验证
③:验证成功后进行登录表示设置
a.//session 设置登录标示
b.//cookie保存登陆信息
c.//记录登录时间和IP地址并进行保存
3.源码
控制器
1 public function index(){
2 $adminL = D('Admin');
3 if(IS_POST){
4 //判断验证码
5 if(strtoupper($_POST['verify']) == $_SESSION['code']){
6 //账号和密码验证
7 if($adminL->CheckByLogin($_POST['username'],$_POST['password'])){
8 $_SESSION['is_login']='yes';
9 //cookie保存登陆信息
10 setcookie('Login_id',$_POST['username'],time()+3600,'/');
11 setcookie('Login_pass',md5(md5("smar".$_POST['password']."php")),time()+3600,'/');
12 $_SESSION['Login_id']=$_POST['username'];
13 //记录登录时间和IP地址
14 $adminL->lasttimer = time();
15 $adminL->loginip = getIP(); //自定义的一个函数
16 $result = $adminL->where()->save();
17 if($result){
18 $this->success('登录成功','/index.php/admin/index/');exit();
19 }
20 else{
21 $this->error('程序出现异常请刷新页面');exit();
22 }
23 }else{
24 $this->error('账号密码错误');
25 exit();
26 }
27 }else{
28 $this->error('验证失败');
29 exit();
30 }
31 }
32 else{
33 $this->display();
34 }
35 }
模型:
1 public function checkByLogin($username,$password){
2 /*smar php 加密的字段可自行加密*/
3 if($this->where("username='$username' and password ='".md5(md5("smar".$password."php"))."'")->find()){
4 return true;
5 }else{
6 echo false;
7 }
8 }
4. 退出登录
清除cookie 和session