登录和退出

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

原文地址:https://www.cnblogs.com/subtract/p/4230161.html