后台通用管理系统之登陆总结

原创 2018-12-26 12:21:46 448
摘要:一.后台通用管理系统主要功能就是登陆,退出登录,跳转,管理员列表,管理员权限设置,菜单管理,权限分配和一些系统设置等.二.登陆模块    1.后台登陆模块要求简介,易操作,首先创建用户表,字段要求要用角色id,通过角色id来根据角色分配权限    2.登陆验证码功能,有composer扩展的captcha实现.&nbs

一.后台通用管理系统主要功能就是登陆,退出登录,跳转,管理员列表,管理员权限设置,菜单管理,权限分配和一些系统设置等.

二.登陆模块

    1.后台登陆模块要求简介,易操作,首先创建用户表,字段要求要用角色id,通过角色id来根据角色分配权限

1.png

    2.登陆验证码功能,有composer扩展的captcha实现.

2.png

    3.自定义数据库访问类封装

        封装自定义的数据库访问类封装可以简化一些用不到的TP自带的数据库访问方法,然后将其写入facade中,再将容器中注入.

<?php
namespace Util;
use think\Db;

class SysDb
{
    //指定表名
    public function table($table)
    {
        $this->where = [];
        $this->field = '*';
        $this->order = '';
        $this->limit = 0;
        $this->table = $table;
        return $this;
    }
    //指定查询字段
    public function field($field="*")
    {
        $this->field = $field;
        return $this;
    }

    //加载数量
    public function limit($limit)
    {
        $this->limit = $limit;
        return $this;
    }

    //排序
    public function order($order)
    {
        $this->order = $order;
        return $this;
    }

    //条件查询
    public function where($where = [])
    {
        $this->where = $where;
        return $this;
    }

    //单条记录
    public function item()
    {
        return Db::name($this->table)->field($this->field)->where($this->where)->find();
    }

    //返回多条数据
    public function lists()
    {
        $query = Db::name($this->table)->field($this->field)->where($this->where);
        $this->limit && $query = $query->limit($this->limit);
        $this->order && $query = $query->order($this->order);
        return $query->select();
    }

    //自定义索引
    public function cates($index)
    {
        $query = Db::name($this->table)->field($this->field)->where($this->where);
        $this->limit && $query = $query->limit($this->limit);
        $this->order && $query = $query->order($this->order);
        $lists =  $query->select();
        if(!$lists){
            return $lists;
        }
        $result = [];
        foreach ($lists as $key=>$value)
        {
            $result[$value[$index]] = $value;
        }
        return $result;
    }

    //分页方法
    public function pages($pageSize = 10)
    {
        $total = Db::name($this->table)->where($this->where)->count();
        $query = Db::name($this->table)->field($this->field)->where($this->where);
        $this->order && $query = $query->order($this->order);
        $data = $query->paginate($pageSize,$total);
        return array('total'=>$total,'lists'=>$data->items(),'page'=>$data->rendor());       //items()返回数据集
    }

    //插入数据库方法
    public function insert($data)
    {
        return Db::name($this->table)->insertGetId($data);
    }

    //批量插入
    public function insertAll($data)
    {
        return Db::name($this->table)->insertAll($data);
    }

    //修改
    public function update($data)
    {
        return Db::name($this->table)->where($this->where)->update($data);
    }
}

    4.Facade中创建SysDb.php

<?php

namespace think\facade;

use think\Facade;

class SysDb extends Facade
{
        
    protected static function getFacadeClass()
    {
        return 'sysdb';
    }
}

    5.容器类中写入绑定标识

//新增sysDb
'sysdb'                 => SysDb::class,

    6.实现登陆功能

<?php
namespace app\admins\controller;
use think\Controller;
use think\facade\SysDb;    //门面

class Account extends Controller
{
    public function login()
    {
        return $this->view->fetch();
    }

    public function dologin()
    {
        $username = trim(input('post.username'));
        $password = input('post.password');
        $verifycode = input('post.verifycode');
        if($username == ''){
            exit(json_encode(array('code'=>1,'msg'=>'用户名不能为空')));
        }
        if($password == ''){
            exit(json_encode(array('code'=>2,'msg'=>'密码不能为空')));
        }
        if($verifycode == ''){
            exit(json_encode(array('code'=>3,'msg'=>'验证码不能为空')));
        }
        //验证验证码
        if(!captcha_check($verifycode)){
            exit(json_encode(array('code'=>4,'msg'=>'验证码不正确')));
        }

        //验证用户
//        $this->db = new SysDb();
        $res = SysDb::table('admins')->where(array('username'=>$username))->item();    //使用新增门面技术
        if(!$res){
            exit(json_encode(array('code'=>5,'msg'=>'用户名不存在')));
        }
        if($res['password'] != md5($password) ){
            exit(json_encode(array('code'=>6,'msg'=>'密码不正确')));
        }
        if($res['status']==1){
            exit(json_encode(array('code'=>7,'msg'=>'该管理员已经被禁用')));
        }
        //设置用户的session值
        session('admin',$res);
        exit(json_encode(array('res'=>0,'msg'=>'登陆成功')));

    }
}

4.png3.png5.png6.png

    7.非法登陆操作,通过session,判断是否有session的值,没有则强制跳转登陆界面

<?php
namespace app\admins\controller;
use think\Controller;

class Base extends Controller
{
    public function __construct()
    {
        parent::__construct();
        if(session('admin') == ''){
            header('Location:/index.php/admins/account/login');
            exit();
        }
    }
}



发布手记

热门词条