用户登录注销功能

1:判断登录

  public function main(){

//dump(session('admin_id'));die;

      if(!session('admin_id')){

      $this->success('未登录',U('index/login'),2);

      }

      $this->display();

 

    }

 

 

 

    

    public function login(){

      //两个逻辑:展示、收集

      if(!empty($_POST)){

        //校验验证码

        $vry = new \Think\Verify();

        if($vry ->check($_POST['verify']))

          {

             //校验用户名密码

             //先根据用户名查询一遍,查看是否存在此用户名,存在继续走,不存在返回个提示,就此截止。以此增加安全性跟效率

             //然后获取密码,查看获取的密码md5后跟数据库的密码是否一致,

             //如果一样则用户名密码验证通过,然后将用户名name跟id存到session里面,以后页面登录操作,可以直接判断有没有session['admin_name']或者session['adminid'],来判断用户是否登录,

             $username = I('post.username','');

 

             $firs=M('manager')->where("mg_name='$username'")->find();

            //echo $firs['mg_pwd'];die;

            // echo M('manager')->getLastsql();die;

             //print_r($firs);die;

             if(empty($firs)){

              $this->error('用户不存在','/admin/home/empty/',3);

             }

 

             $passwd = I('post.pwd','');

 

             if($passwd == $firs['mg_pwd'])

              {

                //接下来就是session持久化用户名跟id,然后页面跳转,也就是将提交的用户信息保存到admin_name,admin_id中去,此时session会自动生成session_id(),其他页面判断时也可以用有无这个值进行判断,id是会不断变化的

                session('admin_name',$info['mg_name']);//将mg_name存到session中

                session('admin_id',$info['id']);

                $this->redirect('main');

                }else{

                echo "用户名密码错误";

              }

          }

          else

          {

          echo "验证码错误:(";

          }

 

          

          

      }else{

        $this->display();

      }

$this->display();

 

    }

 

 

public function logout(){

  //退出系统,清楚session就行

  session(null);

  $this->redirect('login');

}

 

 

 

public function verify(){

   $config =    array(   

    'fontSize'  => 18,    // 验证码字体大小  

    'length'   => 4,     // 验证码位数 

    'useNoise' => true, // 关闭验证码杂点

        );

  $Verify =     new \Think\Verify($config);

  $Verify->entry();

}

 

 

 

增强安全性,tyteam.com/admin/Home/Saylist/add/直接打开这个地址如果没有session判断,则用户也能进行增删改差,如果加了session判断,则必须进行登录才可以操作。

1:新建sessionpdcontrollar控制器用来判断sessionid存不存在

<?php

namespace Home\Controller;

use Think\Controller;

class SessionpdController extends Controller {

function __construct (){//使用构造函数自动加载判断session

parent::__construct();

if(!session('admin_name'))

{

$this->error('<span style="font-size:36px; color:#ff0000;">没有登录奥亲:)!</span>',U('index/login'),2);

}else{

echo 'session _name='.session('admin_name');

}

}

 

}

2:将后台页面中顶部class ColumnController extends Controller 改为

class ColumnController extends SessionpdController

 

这样在页面加载时会自动判断session存不存在,进行判断用户的登录情况。

 

2:判断session过期时间

login方法里加入 $_SESSION['dl_time']=time()+480;//设置session过期时间

if($passwd == $firs['mg_pwd'])

               {

                //接下来就是session持久化用户名跟id,然后页面跳转,也就是将提交的用户信息保存到admin_name,admin_id中去,此时session会自动生成session_id(),其他页面判断时也可以用有无这个值进行判断,id是会不断变化的

                  session('admin_name',$firs['mg_name']);//将mg_name存到session中

                  session('admin_id',$firs['id']);

                  $_SESSION['dl_time']=time()+480;//设置session过期时间

 

                  $this->redirect('main');

                }

sessionpdcontrollar控制器里面修改

<?php

namespace Home\Controller;

use Think\Controller;

class SessionpdController extends Controller {

function __construct (){

parent::__construct();

//判断用户登录情况开始

if(!session('admin_name'))

{

$this->error('<span style="font-size:36px; color:#ff0000;">没有登录奥亲:)!</span>',U('index/login'),2);

}else{

//判断用户登录情况完毕

 

//echo 'session _name='.session('admin_name');

//设置session过期时间

/* $_SESSION['dl_time']=time()+60;//设置session时间,当前时间加上一分钟}*/

if(isset($_SESSION['dl_time']))

{

     if($_SESSION['dl_time']<time())

     {

       /* echo date('y-m-d h:i:s',time());

        echo "<br>过期时间 =";

        echo date('y-h-m h:i:s',$_SESSION['dl_time']);;*/

         session(null);

   $this->redirect('login');

     }

}else

 

{

        $_SESSION['dl_time']=time()+60;

       /*echo $_SESSION['dl_time'];

echo "<br>";

echo date('y-h-m h:i:s',$_SESSION['dl_time']);*/

}

//session时间设置完毕

 

}

}

 

}

 

posted @ 2017-12-26 22:42  御世制人  阅读(2042)  评论(0编辑  收藏  举报