后台管理系统(含源码)
2022-07-28 14:14:58
270
{{single.collect_count}}

后台管理系统

https://gitee.com/hu-shaobin/php-projects源码地址

1.前期准备

1.1需要资源

thinkPHP5后端框架+layui前端框架+mysql

1.2安装thinkphp5

在phpstudy/www目录下安装tp5.0

composer create-project --prefer-dist topthink/think=5.1 文件名(比如video)

1.3安装layui

到layui官网下载:https://www.layui.com/

把luyai解压放在public/static/plugins目录下以便后面html文件引用

<link rel="stylesheet" href="/static/plugins/layui/css/layui.css"><script type="text/javascript" src="/static/plugins/layui/layui.js"></script>

1.4配置域名

image-20210313155442678

访问浏览器http://php.demo/,出现下图,配置成功

image-20210313155607219

1.5查询语句封装

extend/Util/data/Sysdb.php

2.登录页面

2.1用户表

image-20210313161720353

2.2创建入口文件

在public目录下创建admins.php(内容同index.php),然后在application目录下创建admins,在admins目录下创建controller和view目录,最后在controller控制器创建Account.php和view相应视图。

image-20210313160853554

2.3验证码的安装与配置

2.3.1安装

d:\phpstudy\WWW\video>composer require topthink/think-captcha 1.*

2.3.2 config.php验证码配置(可做相应修改)

// 验证码配置'captcha' => ['setKey'=>'DolphinPHP.COM',//必须// 验证码的字符集'codeSet' => '23456789abcdefhijkmnpqrstuvwxyzABCDEFHJKMNPQRSTUVWXYZ',// 设置验证码字体大小'fontSize' => 18,// 添加混淆曲线'useCurve' => false,// 设置图片的高度、宽度'imageW' => 150,'imageH' => 35,// 验证码位数'length' =>4,// 验证成功后重置'reset' =>true],

2.4回车登录

image-20210313170817092

2.5点击刷新验证码

image-20210313170855822

image-20210313170914752

3.后台首页

3.1布局

image-20210313162549704

3.2功能

菜单点击,注销(代码见admins/controller/Hom.php和admins/controller/view/home)

3.3阻止非法用户访问

写一个baseAdmin类,实现对没有登录用户不能访问。然后admins/controller所有文件继承该类。

<?phpnamespace app\admins\controller;use think\Controller;use Util\data\Sysdb;class BaseAdmin extends Controller{public function __construct(){$this->db=new Sysdb();parent::__construct();$this->_admin = session('admin');// 未登录的用户不允许访问if(!$this->_admin){//如果session没有值,判定用户没有登录就跳转到登录页面header('Location: /admins.php/admins/Account/login');exit;} }}

4.管理员管理

4.1管理员列表

4.1.1布局

image-20210313164308829

4.1.2功能:添加,编辑,删除(代码见admins/controller/Admin.php和admins/view/Admin)

添加界面

image-20210313165547251

编辑界面

image-20210313165522978

添加编辑页面见layer弹出层的iframe层 https://layer.layui.com/

image-20210313165811321

删除界面

image-20210313165905325

删除界面见layer弹出层的询问层 https://layer.layui.com/

image-20210313170036196

4.1.3 表格中volist函数循环遍历

{volist name="data.lists" id="vo"}<tr><th>{$vo.id}</th><th>{$vo.username}</th><th>{$vo.truename}</th><th>{$vo.gid}</th><th>{$vo.status}</th><th>{$vo.add_time}</th><th><button class="layui-btn layui-btn-xs">编辑</button><button class="layui-btn layui-btn-xs layui-btn-danger">删除</button></th></tr>{/volist}

5.权限管理

5.1菜单管理

5.11布局

image-20210313173344758

image-20210313174845533

5.1.2 菜单表

菜单只能显示两级,默认只有两级菜单,pid为上一级菜单的mid

image-20210313173550677

5.13功能:保存,子菜单,返回上一级(代码见admins/controller/Menu.php和admins/view/Mneu)

注:只有pid>0才有返回上一级,只有$pid=0才有子菜单。

image-20210313175148452

image-20210313175206153

5.2角色管理

5.2.1布局

image-20210313175401802

5.2.2角色表

image-20210313175536827

5.2.3功能:添加编辑删除(代码见admins/controller/Roles.php和admins/view/Roles)

5.2.4权限菜单分级

image-20210313175812628

把子菜单放在children里

private function gettreeitems($items){$tree = array();foreach ($items as $item) {if(isset($items[$item['pid']])){$items[$item['pid']]['children'][] = &$items[$item['mid']];}else{$tree[] = &$items[$item['mid']];}}return $tree;}

下面两图就是分级和不分级区别:

image-20210313181452343

image-20210313181544606

2

6.系统管理(未完善)

6.1网站设置

6.1.1布局

image-20210313181947321

6.1.2网站名称表

image-20210313182043194

6.1.3功能(代码见admins/controller/Site.php和admins/view/Site)

7.标签管理

7.1标签表

image-20210313182728598

image-20210313182930646

flag分类:比如频道(channel)资费(charge)地区(area)…

7.2布局

image-20210313183207235

7.3功能

(代码见admins/controller/Labels.php和admins/view/Labels)

8.影片管理

8.1影片表

image-20210313231902676

8.2布局

image-20210313232453009

8.3功能

8.3.1(代码见admins/controller/video.php和admins/view/video)

8.3.2 添加编辑删除

8.3.3 分页功能+模糊搜索

后端代码:分页参考thinkphp分页实现https://www.kancloud.cn/manual/thinkphp5_1/354120

image-20210313232246940

前端使用layui分页模块https://www.layui.com/doc/modules/laypage.html

image-20210313232714885

8.3.4图片上传

前端使用layui的文件上传https://www.layui.com/doc/modules/upload.html

image-20210313232943755

后端使用thinkphp上传文件https://www.kancloud.cn/manual/thinkphp5_1/354121

image-20210313233207092

9.杂项

js 函数传值

onclick="functionName(this);"onclick="functionName(this.value);"

通过this传值,函数获取的是当前的这个标签,比如p、li等,如果用jQuery来获取当前的这个标签可以通过

functionName(obj){$(obj).attr('p');}

这样$(obj)就是获取了当前的那个标签;

通过this.value传值的,在函数方面接收的就是具体的数据

functionName(obj){ alert(obj);}

提交表单

$.post('/admins.php/admins/Admin/save', $('form').serialize(), function(res) {}, 'json');

页面刷新:

 setTimeout(function(){ window.location.reload(); },1000)

js 中return false作用

onclick="child({$vo.mid});return false;"

在js中return false的作用一般是用来取消默认动作的。比如你单击一个链接除了触发你的 onclick时间(如果你指定的话)以外还要触发一个默认事件就是执行页面的跳转。所以如果你想取消对象的默认动作就可以return false。

回帖
全部回帖({{commentCount}})
{{item.user.nickname}} {{item.user.group_title}} {{item.friend_time}}
{{item.content}}
{{item.comment_content_show ? '取消' : '回复'}} 删除
回帖
{{reply.user.nickname}} {{reply.user.group_title}} {{reply.friend_time}}
{{reply.content}}
{{reply.comment_content_show ? '取消' : '回复'}} 删除
回帖
收起
没有更多啦~
{{commentLoading ? '加载中...' : '查看更多评论'}}