abstract:一.后臺通用管理系統(tǒng)主要功能就是登陸,退出登錄,跳轉(zhuǎn),管理員列表,管理員權(quán)限設(shè)置,菜單管理,權(quán)限分配和一些系統(tǒng)設(shè)置等.二.登陸模塊 1.后臺登陸模塊要求簡介,易操作,首先創(chuàng)建用戶表,字段要求要用角色id,通過角色id來根據(jù)角色分配權(quán)限 2.登陸驗證碼功能,有composer擴(kuò)展的captcha實現(xiàn).&nbs
一.后臺通用管理系統(tǒng)主要功能就是登陸,退出登錄,跳轉(zhuǎn),管理員列表,管理員權(quán)限設(shè)置,菜單管理,權(quán)限分配和一些系統(tǒng)設(shè)置等.
二.登陸模塊
1.后臺登陸模塊要求簡介,易操作,首先創(chuàng)建用戶表,字段要求要用角色id,通過角色id來根據(jù)角色分配權(quán)限
2.登陸驗證碼功能,有composer擴(kuò)展的captcha實現(xiàn).
3.自定義數(shù)據(jù)庫訪問類封裝
封裝自定義的數(shù)據(jù)庫訪問類封裝可以簡化一些用不到的TP自帶的數(shù)據(jù)庫訪問方法,然后將其寫入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; } //加載數(shù)量 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(); } //返回多條數(shù)據(jù) 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()返回數(shù)據(jù)集 } //插入數(shù)據(jù)庫方法 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中創(chuàng)建SysDb.php
<?php namespace think\facade; use think\Facade; class SysDb extends Facade { protected static function getFacadeClass() { return 'sysdb'; } }
5.容器類中寫入綁定標(biāo)識
//新增sysDb 'sysdb' => SysDb::class,
6.實現(xiàn)登陸功能
<?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(); //使用新增門面技術(shù) 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'=>'該管理員已經(jīng)被禁用'))); } //設(shè)置用戶的session值 session('admin',$res); exit(json_encode(array('res'=>0,'msg'=>'登陸成功'))); } }
7.非法登陸操作,通過session,判斷是否有session的值,沒有則強(qiáng)制跳轉(zhuǎn)登陸界面
<?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(); } } }