0%

数据库课程设计学习记录五

不同用户的跳转

一定要理清自己的控制器结构和关系,要不然就会乱到自暴自弃:(

明确用户类别

我用数字代表用户类别,0代表系统管理员,他拥有最高权限,可以访问并修改删除一切数据,接下来1是用户管理员,他只可以访问并修改用户表,2是维修员,他可以访问设备表,并访问修改故障设备表和维修表(这里只做完了维修表),3是普通用户,他只可以访问设备表。

整理文件结构

开始的文件结构十分混乱,在经历了一番整理后,主要的目录功能如下:
控制器Login.php负责登录界面、后台管理界面,用户表界面,Weixiu.php负责维修表界面,Guzhang.php负责故障设备表界面,Search.php负责设备表界面。

不同用户访问

首先是登录界面,我们进入登录界面:

登录界面

然后在登录界面输入用户信息,然后在Login.php下会判断输入的用户类别,跳转到不同的界面,具体的方法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public function check()
{
$data = input('post.');
$user = new UserModel();
$result = $user->where('yonghuhao',$data['yonghuhao'])->find();
if($result){
if($result['mima'] === $data['mima']){
session('yonghuhao',$data['yonghuhao']);
}
else{
$this->error('密码不正确');
}
}
else{
$this->error('用户名不存在');
exit;
}
if(captcha_check($data['code']))
{
if($result['yonghuleibie'] === 0)
{$this->success('登录成功!','login/index');}
if($result['yonghuleibie'] === 1)
{$this->success('登录成功!','login/list');}
if($result['yonghuleibie'] === 2)
{$this->success('登录成功!','weixiu/list');}
if($result['yonghuleibie'] === 3)
{$this->success('登录成功!','search/list');}
else
{
$this->error('用户类别有误!');
}
}
else{
$this->error('验证码不正确');
}
}

可以看到里面的判断界面,不同的用户会跳转到不同的表里。

例如你登录的用户号用户类别为1,则意味着他可以查看和修改用户表:

用户表

系统管理员

系统管理员的权限最大,所以他有权访问上面的用户的任何一张表,于是跳转到主界面:

系统管理员1
系统管理员2
系统管理员3

这里每个选项需要调用不同模块下的表,所以我采用了success方法,这样就可以跨控制器调用方法:

但是有个尴尬的地方,每次点击都得等3秒:

等待

其中index.html,也就是系统管理员界面的代码是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta name="renderer" content="webkit">
<title>后台管理中心</title>
<script src="/js/jquery.js"></script>
</head>
<body style="background-color:#f2f9fd;">
<div class="header bg-main">
<div class="logo margin-big-left fadein-top">
<h1><img src="/images/y.jpg" class="radius-circle rotate-hover" height="50" alt="" />后台管理中心</h1>
</div>
<div class="head-l"><a class="button button-little bg-green" href="{:url('keshe/Login/index')}" target="_blank"><span class="icon-home"></span> 前台首页</a> &nbsp;&nbsp;<a href="##" class="button button-little bg-blue"><span class="icon-wrench"></span> 清除缓存</a> &nbsp;&nbsp;<a class="button button-little bg-red" href="{:url('admin/Index/logout')}"><span class="icon-power-off"></span> 退出登录</a> </div>
</div>
<div class="leftnav">
<div class="leftnav-title"><strong><span class="icon-list"></span>菜单列表</strong></div>
<h2><span class="icon-user"></span>基本设置</h2>
<ul style="display:block">
<li><a href="list" target="right"><span class="icon-caret-right"></span>用户管理</a></li>
<li><a href="shebei" target="right"><span class="icon-caret-right"></span>设备管理</a></li>
<li><a href="guzhang" target="right"><span class="icon-caret-right"></span>故障管理</a></li>
<li><a href="weixiu" target="right"><span class="icon-caret-right"></span>维修管理</a></li>
</ul>
</div>
<script type="text/javascript">
$(function(){
$(".leftnav h2").click(function(){
$(this).next().slideToggle(200);
$(this).toggleClass("on");
})
$(".leftnav ul li a").click(function(){
$("#a_leader_txt").text($(this).text());
$(".leftnav ul li a").removeClass("on");
$(this).addClass("on");
})
});
</script>
<ul class="bread">
<li><a href="{:url('keshe/Yonghu/list')}" target="right" class="icon-home"> 首页</a></li>
</ul>
<div class="admin">
<iframe scrolling="auto" rameborder="0" src="yonghu\list.html" name="right" width="100%" height="100%"></iframe>
</div>
<div style="text-align:center;">
</div>
</body>
</html>

当然这个文件里有大量的CSS样式,因为是网上的模版,所以代码太多了,这里不表,可以看到点击用户管理,他会调用list方法,点击设备管理他会调用shebei方法,所以我们在Login.php方法里写入这些方法,并且让这些方法指向对应的表,即可在这个界面呈现所有的表:

1
2
3
4
5
6
7
8
9
10
11
12
public function shebei()
{
$this->success('','search/list');
}
public function weixiu()
{
$this->success('','weixiu/list');
}
public function guzhang()
{
$this->success('','guzhang/list');
}

因为list方法调用的用户信息模版就在view的login下,所以不用跨控制器。

这样,我们就完成了不同用户访问不同界面的功能。