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

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

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'=>'登陆成功')));
}
}



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();
}
}
}