一、登录部分

(1)在输入域名时,首页判断用户是否进行过登录

在Base控制器中初始化两个方法,根据是否获取到用户的id进行判断,并首先进行执行:

class Base extends Controller
{protected function _initialize(){parent::_initialize();define('USER_ID', Session::get('user_id'));}protected function isLogin(){if (empty(USER_ID)) {$this->error('用户未登录,无权访问', url('user/login'));}}protected function alreadyLogin(){if (!empty(USER_ID)) {$this->error('用户已经登录,请勿重复登录', url('index/index'));}}
}

(2)登录场景

使用到thinkphp提供的验证码功能,并进行校验,通过ajax的方式进行用户信息的校验和提交

调用User的控制器中调用checkLogin的方法,获取并校验:

//验证登录public function checkLogin(Request $request){//初始返回参数$status = 0;$result = '';$data = $request->param();$rule = ['name|用户名' => 'require','password|密码' => 'require','verify|验证码' => 'require|captcha',];$msg = ['name' => ['require'=>'用户名不能为空,请检查'],'password' => ['require'=>'密码不能为空,请检查'],'verify' => ['require' => '验证码不能为空,请检查!','captcha' => '验证码错误,请检查!',],];$result = $this->validate($data, $rule,$msg);if ($result === true) {$map = ['name' =>$data['name'],'password' =>md5($data['password']),];$user = UserModel::get($map);if ($user === null) {$status = 0;$result = '没有找到该用户';} else {$status = 1;$result = '验证通过,点击【确定】进入';Session::set('user_id',$user->id);Session::set('user_info', $user->getData());$user->setInc('login_count');}}return ['status'=>$status,'message'=>$result,'data'=>$data];}

验证码的其他配置参考:https://www.kancloud.cn/manual/thinkphp5/154295

二、主页面及主要功能

这里主要是使用到了thinkphp模板中的内置标签,包括不同角色查看不同的内容,超级管理员可以查看到所有的管理员,并可以对他们的内容进行修改,而普通的管理员只可以对自己的信息进行修改。

主页面显示的信息:

<tr><th width="30%">服务器计算机名</th><td><span id="lbServerName">{$Reque
</tr>
<tr><td>服务器IP地址</td><td>{$Request.ip}</td>
</tr>
<tr><td>服务器域名</td><td>{$Request.domain}</td>
</tr>
<tr><td>当前PHP版本</td><td>{$Think.const.PHP_VERSION}</td>
</tr>
<tr><td>服务器版本 </td><td>{$Think.const.PHP_OS}</td>
</tr>
<tr><td>当前请求URL</td><td>{$Request.url.true}</td>
</tr>
<tr><td>当前Session数量 </td><td>{:count($_SESSION)}</td>
</tr>
<tr><td>当前SessionID </td><td>{:session_id()}</td>
</tr>

三、对管理员的操作

对管理员的操作主要包括超级管理员对管理员状态的修改,可以对管理员登录系统进行控制,添加新的管理员;删除管理员;和批量恢复删除的管理员;

(1)显示管理员列表及权限控制

//显示管理员界面public function adminList(){$this->assign('title', '管理员列表');$this->assign('keywords', '教学管理系统');$this->assign('dsc', '教学案例');$this->view->count = UserModel::count();$userName = Session::get('user_info.name');if ($userName == 'admin') {$list = UserModel::all();} else {$list=UserModel::all(['name'=>$userName]);}$this->assign('list', $list);return $this->fetch('admin_List');}

对权限的控制:

{eq name="$Think.session.user_info.name" value="admin"}
{if condition="$vo.status eq '已启用'"}
<a style="text-decoration:none" onClick="admin_stop(this,{$vo.id})" href="javascript:;" title="停用"><i class="Hui-iconfont"></i>
</a>
{else /}
<a style="text-decoration:none" onClick="admin_start(this,{$vo.id})" href="javascript:;" title="启用"><i class="Hui-iconfont"></i>
</a>
{/if}
{/eq}

(2)添加管理员

//添加管理员提交public function addUser(Request $request){$data = $request->param();$status = 1;$message = '添加成功';$rule = ['name|用户名' => "require|min:3|max:10",'password|密码' => "require|min:3|max:10",'email|邮箱' => 'require|email'];$result = $this -> validate($data, $rule);if ($result === true) {$user= UserModel::create($request->param());if ($user === null) {$status = 0;$message = '添加失败~~';}}else{$status = 0;$message = '添加失败~~';}return ['status'=>$status, 'message'=>$message];}

(3)批量恢复管理员与删除管理员

主要是在设计数据库的时候,增加一个is_delete的字段,当选择删除时,修改字段值为1,并记录修改删除的时间

同理,批量的恢复了逻辑就是把is_delete字段值为1的重新变为0,并且把删除时间字段置空。这其实也就是软删除的操作。

//删除用户
public function deleteUser(Request $request)
{$user_id = $request->param('id');UserModel::update(['is_delete' => 1], ['id' => $user_id]);UserModel::destroy($user_id);
}
//恢复删除内容
public function unDelete()
{UserModel::update(['delete_time'=>null],['is_delete'=>1]);
} 

四、对班级、教师、学生的操作

有了之前对管理员的操作基础、后面的内容其实已经可以根据自己的逻辑来逐步实现。

(1)班级列表

(2)添加教师

(3)学生列表

对于列表中显示数据,会用到分页的功能,拿学生列表的显示来说明:

在页面中使用:

<div class="container"><div class="row"><div class="col-md-4"></div><div class="col-md-4">{$studentList->render()}</div></div><div class="col-md-4"></div>
</div>

在控制器中使用模型中自带的分页方法进行分页操作:

 $studentList = StudentModel::paginate(8);

五、总结

这是我第一个使用thinkphp制作的小项目,其中存在诸多问题,比如首先要说道的安全性的问题,在后续的内容中我会采用到AES对一些重要的数据进行加密,另外,没有进行路由配置,都是直接通过模块-》控制器-》方法进行操作,这也是需要改进的地方,还有分页的操作,模型自带的分页操作感觉不够灵活,后续会更新采用layui进行分页的方法。

源码地址:https://download.csdn.net/download/dhywjx/10704152

基于PHP使用thinkphp开发的教学管理系统相关推荐

  1. cms php vue 开源_lucms —— 基于 Vue 和 Laravel 开发的后台管理系统

    lucms -- 基于 Vue 和 Laravel 开发的后台管理系统 由 Ucer 创建于2年前, 最后更新于 1年前 版本号 #1 36802 views 8 likes 0 collects 项 ...

  2. 基于Spring+SpringMvc+Mybatis开发javaWeb汽车维修管理系统

    你知道的越多,你不知道的越多 点赞再看,养成习惯 源码分享在文末,点赞关注,解锁更多毕业设计项目 企鹅:869192208 如果您有疑问或者见解,欢迎指教: 文章目录 一.开发背景 二. 需求分析 三 ...

  3. 基于Servlet+jsp+mysql开发javaWeb学生管理系统(学生信息、学生选课、学生成绩、学生签到考勤)

    你知道的越多,你不知道的越多 点赞再看,养成习惯 如果您有疑问或者见解,或者没有积分想获取项目,欢迎指教: 企鹅:869192208 文章目录 一.开发背景 二. 需求分析 三.开发环境 四.运行效果 ...

  4. php开发的教学管理系统,php教学管理系统设计和实现

    本文论述了在B/S系统架构下采用php技术分析.设计.开发用于高校教学管理的教学管理系统的过程.该系统基本满足了教学管理方面的需求,用户界面友好.系统对用户数据有效地实现了信息电子化处理,从而降低了人 ...

  5. 在线教育app开发,教学管理系统的开发方案设计

    在线教育不仅仅是老师和学生双方教学场景的变化,背后的教学管理系统同样重要.教学内容是教育的核心资源,但是一套行之有效系统对于用户体验和教学成果上带来的帮助不可忽略. 当我们讲到教学时,经常想到是一个老 ...

  6. 项目设计-基于SpringBoot和Vue开发的宿舍管理系统

    前言 ​ 本期项目是宿舍管理系统,主要包括数据监控大盘.宿舍楼管理.宿舍管理.宿舍成员管理.借用管理.卫生管理.缴费管理.保修管理.日志管理.用户管理.角色管理以及各个模块的导出功能.以企业级的开发标 ...

  7. ThinkPHP开发的手册管理系统-文档云(仿看云),可二次开发

    基于ThinkPHP5+云豹框架+Markdown开发的一款多功能文档系统,支持在线编写.Git仓库导入.Markdown文件解析.在线阅读.导出html.文档销售.付费阅读.免费试读.统计等功能. ...

  8. (内付学习版源码和文档,包含房客源功能)采用thinkphp开发的房产管理系统。

    近年来,随着信息化管理系统的风靡,通过信息化建设提升企业管理水平已经成为众多行业的共识,房地产行业也不例外.但现在市场上,许多房产管理系统在功能上都是大同小异,同质化越来越严重,房地产公司和房产中介想 ...

  9. 基于Servlet+jsp+mysql开发javaWeb学生成绩管理系统

    你知道的越多,你不知道的越多 点赞再看,养成习惯 如果您有疑问或者见解,或者没有积分想获取项目,欢迎指教: 企鹅:869192208 文章目录 一.开发背景 二. 需求分析 三.开发环境 四.运行效果 ...

  10. 【数据库原理与应用】数据库应用实例— 教学管理系统

    目录 一.教学管理系统简介 二.如果要设计开发该教学管理系统,需要考虑那些问题呢?

最新文章

  1. 前端开发中的Error以及异常捕获
  2. 基于Vue的事件响应式进度条组件
  3. PHP中date()函数详细参数
  4. qgraphicsview鼠标移动图片_如何在中间鼠标的QGraphicsView中滚动QGraphicsScene?
  5. 数据中心成投资新宠 今年或再创历史纪录
  6. LeetCode_Path Sum II
  7. html 在tomcat中访问不到_安全服务之安全基线及加固(四)Tomcat篇
  8. java实现单链表常见操作,java面试题,java初级笔试题
  9. SQL语言基础【DDL、DML、DCL、DQL】
  10. npm设置和取消代理的方法
  11. 关于postgre中的pg_hba.conf 文件
  12. html空格字符转义存入数据库,HTML中多种空格转义字符
  13. npm安装github包
  14. 传统人工势场法的MATLAB实现
  15. python绘图——绘制正负区分的柱形图[ax.bar()]
  16. 如何运用计算机教学教学的收获,计算机教学中行动感悟法的应用
  17. nodejs mysql knex_nodejs之knex模块从安装到使用
  18. 微型计算机原理与接口技术-实验一
  19. 微信中已停止访问该网页、据用户投诉及腾讯手机管家云网址检测、该网页包含不安全内容。为维护绿色上网环境,已停止访问的解决方案
  20. CAN FD实战之可变波特率

热门文章

  1. typora里插入图片,设置图片大小和位置
  2. linux限制syslog大小,c – 如何限制syslog管理的日志文件的总大小?
  3. 微信公众号怎么创建?
  4. 外贸出口管理系统亮点及重点
  5. 光源基础知识及光源选型
  6. 【图形和图像】三原色
  7. python发送短信接口_Python发短信接口
  8. 阿里图片合成接口拼接
  9. 小米笔记本装linux教程视频教程,手把手教你加装SSD,让小米笔记本运行更加666!...
  10. 冯诺依曼结构和哈佛结构