基于PHP使用thinkphp开发的教学管理系统

一、登录部分

(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

  • 9
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
基于ThinkPHP的社团管理系统是一种用于管理社团活动的软件系统。该系统利用ThinkPHP框架的优势,能够提供高效、稳定和安全的运行环境,为用户提供全面的社团管理功能。 首先,基于ThinkPHP的社团管理系统能够实现对社团成员的管理。系统可以记录和管理社团成员的基本信息,包括姓名、年龄、性别等。管理员可以进行成员的增删改查操作,以便随时了解社团成员的情况,并根据需要进行有针对性的管理。 其次,该系统能够实现活动管理功能。管理员可以发布社团活动通知,包括活动时间、地点、内容等,并实时统计活动的参与人数。成员可以通过系统报名参加活动,并对活动进行评价和反馈,以便社团能够根据反馈意见优化活动安排。 同时,基于ThinkPHP的社团管理系统还可以实现财务管理功能。系统提供资金管理模块,可以记录社团的日常收入和支出情况,并生成财务报表,方便管理员进行财务的统计和分析。 另外,系统还可以提供在线交流平台,成员之间可以通过系统进行讨论和交流,分享经验和资源,促进社团内部的良好互动。 综上所述,基于ThinkPHP的社团管理系统具备全面的社团管理功能,能够提高社团活动的组织和实施效率,为社团成员提供便利的信息交流和资源共享平台,是一款实用的社团管理软件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值