SDYY大学普通话考试报名系统说明文档

系列文章目录

  1. 健康云平台开发说明文档
  2. SD申报系统迭代说明文档
  3. 漏刻有时物联网传感器API接口对接说明文档
  4. Echarts数据分析系统Data Analysis Platform使用说明文档
  5. 漏刻有时云守护数据可视化v2.0迭代升级说明文档
  6. 百度地图POI多信息点标注开发说明文档
  7. 漏刻有时云守护数据可视化画质感知状态迭代说明文档
  8. Zabbix物联网可视化开发文档
  9. Echarts动态排名柱状图(自适应电脑和手机端)说明文档
  10. 漏刻有时文档系统之XE培训系统二次开发配置手册


前言

一、账户登录
1.SDYY大学普通话考试报名系统的账户为学号,不能自行注册,其中默认密码ZYY#身份证后6位,X大写;

2.输入学号和系统默认密码登录,建议登录后马上修改自己的密码,防止信息泄露;

3.如忘记密码,请联系系统管理员,重新设置;

二、信息认证

1.注册状态,由系统管理员导入完成,能登录即表明已完成该状态;

2.身份认证,系统核对姓名、性别、民族和身份证号,如非实名,则无法提交;

3.基础信息,所在学院、班级、CET状态、联系电话和证件照,用于生成准考证;

4.费用缴纳,考生扫描条码后,系统会自动认证,一经认证,基础信息无法修改;

5.准考制证,系统根据审核情况,进行自动制证。生成后,可打开下载或打印


一、用户前端

1.前端登录

在这里插入图片描述

  1. 后台导入用户信息,以学号为准,默认账号为学号,默认密码ZYY#身份证后6位,X大写;
  2. 支持手机号绑定,但在导入时未涉及到手机号,因此需要在用户首次登录后,强制绑定手机和修改默认密码;

2.绑定手机和修改密码

在这里插入图片描述

    /*强制弹出修改密码*/
    if (user_agree == "0") {
    
    
        getConfirm('?m=Index&a=userBind', '90%', '90%', 'no', '首次登录绑定手机');
    }

//确认协议弹出模态框
function getConfirm(url, width, height, pop, title) {
    
    
    layer.open({
    
    
        type: 2,
        fix: false,
        shade: 0.6,
        title: title,
        maxmin: false,
        area: [width, height],
        closeBtn: 0,
        shadeClose: false,
        anim: 3,
        isOutAnim: true,
        content: [url, pop]
    });
}

3.流程管控

在这里插入图片描述

        var stepData = [
            {
    
    'title': "注册用户",links:"#", "desc": "2022-11-12 00:00:00"},
            {
    
    'title': "身份认证",links:"?m=Index&a=infomationIdentity&act=showIdentity", "desc": "2022-11-12 00:00:00"},
            {
    
    'title': "报名信息",links:"?m=Index&a=infomationEdit&act=showInfo", "desc": "2022-11-12 00:00:00"},
            {
    
    'title': "费用缴纳",links:"?m=Index&a=infomationPay", "desc": "2022-11-12 00:00:00"},
            {
    
    'title': "下载准考证",links:"?m=Index&a=infomationExam&act=showExam", "desc": "2022-11-12 00:00:00"}
        ];

        $.ajax({
    
    
            type: "get",
            url: "api/api.php?act=getUserStatus&token=3cab7ce4142608c0f40c785b5ab5ca24",
            async: true,
            data: {
    
    },
            dataType: "json",
            success: function (res) {
    
    
                var data = res.data[0]['user_status'];
                //更新状态
                steps.make(stepData, '#steps', data);
            }
        });

3.越权安全

多用户系统,使用user_id数字时,容易明文越权,即通过手动修改user_id,可访问不同用户的信息,为了保证用户信息的私密性和完整性,需要对用户信息进行越权控制。

cookie传参

即用户登录后,将user_id设置为cookie,在后台处理时,默认传参。

$user_id = AuthCode($_COOKIE['db_id'], 'DECODE', '', '');

url加密传参

将user_id加密,后台解密,实现参数的密文传参。
m=Index&a=indexDeal&act=preview&user_id=6d0ed7O1wKrWZ8uLeIV3Q8wymU8EUzlCcuwI4CBAtvqf。由于生成的密钥,默认带+,带url传参的时候,系统会默认将+转为空格,因此在get方法获取user_id时,需要将空格替换为+.

$sys_id = str_ireplace(' ', '+', get_param('user_id'));//未解码
$user_id = AuthCode($sys_id, 'DECODE', '', '');//已解码

在这里插入图片描述

数据验证

在后台读取数据库记录,如果为空,直接跳转到信息提示页。

 $row = $db->fetch($current_table, '*', array('user_id' => $user_id), ' user_id DESC');
        if (!$row) {
    
    
            redirect('?m=Index&a=tips&act=tips&tips_id=7');
        }

二、后台管理

1.数据大屏

调用echarts展示各个学院的报名情况(未报名、已报名)
在这里插入图片描述

2.用户管理

在这里插入图片描述

群发短信

//发送短信;
    case "sendSms";
        $user_id = $_POST['user_id'];
        //var_dump($user_id);
        if (is_array($user_id)) {
    
    
            //循环发送信息;
            for ($i = 0; $i < count($user_id); $i++) {
    
    
                $row = $db->fetch($current_table, 'user_name,user_sms,user_phone', array('user_id' => $user_id[$i]), ' user_id DESC');
                if ($row['user_phone'] == NULL || $row['user_phone'] == "") {
    
    
                    $res['code'] = 0;
                    $res['msg'] = $row['user_name'] . "手机号码有误,无法发送";
                    die(json_encode_lockdata($res));
                }

                //发送短信 TODO

                //更新发送短信次数
                $user_sms = $row['user_sms'] + 1;
                $db->update($current_table, array('user_sms' => $user_sms), array('user_id' => $user_id[$i]));
            }
            $res['code'] = 1;
            $res['msg'] = "短信发送成功";
            die(json_encode_lockdata($res));
        } else {
    
    
            $row = $db->fetch($current_table, 'user_name,user_sms,user_phone', array('user_id' => $user_id), ' user_id DESC');
            if ($row['user_phone'] == NULL || $row['user_phone'] == "") {
    
    
                $res['code'] = 0;
                $res['msg'] = $row['user_name'] . "手机号码有误,无法发送";
                die(json_encode_lockdata($res));
            }

            //发送短信 TODO

            //更新发送短信次数
            $user_sms = $row['user_sms'] + 1;
            $db->update($current_table, array('user_sms' => $user_sms), array('user_id' => $user_id));
            $res['code'] = 1;
            $res['msg'] = $row['user_name'] . ",短信发送成功";
            die(json_encode_lockdata($res));
        }
        break;

一键审核

 //一键审核;
    case "sendVerify";
        $user_id = $_POST['user_id'];
        //var_dump($user_id);
        if (is_array($user_id)) {
    
    
            //循环发送信息;
            for ($i = 0; $i < count($user_id); $i++) {
    
    
                $row = $db->fetch($current_table, 'user_name,user_sms,user_phone', array('user_id' => $user_id[$i]), ' user_id DESC');
                $db->update($current_table, array('user_verify' => 2), array('user_id' => $user_id[$i]));
            }
            $res['code'] = 1;
            $res['msg'] = "报名审核成功";
            die(json_encode_lockdata($res));
        } else {
    
    
            $row = $db->fetch($current_table, 'user_name,user_sms,user_phone', array('user_id' => $user_id), ' user_id DESC');
            $db->update($current_table, array('user_verify' => 2), array('user_id' => $user_id));
            $res['code'] = 1;
            $res['msg'] = $row['user_name'] . ",短信发送成功";
            die(json_encode_lockdata($res));
        }
        break;

3.数据分表

为了提高系统的复合利用率,系统增加了数据分表。即:不同批次的学生报名时,切换数据表,当前使用的为当期的。
在这里插入图片描述

配置文件

config.table.php

<?php return ['current_table' => '2024'];

切换数据分表

 //切换数据分表;
    case "sendVerify";
        $tb_name = $_POST['tb_name'];
        if ($tb_name == "") {
    
    
            $res['code'] = 0;
            $res['msg'] = "未选择数据表";
            die(json_encode_lockdata($res));
        } else {
    
    
            //生成数据分表的配置文件config.table.php
            $config_table = "<?php return ['current_table' => '" . $tb_name . "'];";
            @file_put_contents('conf/config.table.php', $config_table);

            //更新状态码;
            $db->update('subtables', array('tb_use' => 0), array(''));
            $db->update('subtables', array('tb_use' => 1), array('tb_name' => $tb_name));

            //操作日志;
            addlogs($_COOKIE["admin_name"], $tb_name . '切换数据分表,STATUS:OK', '', time(), getip());

            $res['code'] = 1;
            $res['msg'] = "数据分表切换成功";
            die(json_encode_lockdata($res));
        }
        break;

添加数据分表

case "add";
        $tb_name = $_POST['tb_name'];
        $tb_times = time();

        $row = $db->fetch('subtables', '*', array('tb_name' => trim(addslashes($tb_name))), ' tb_id DESC');
        if ($row) {
    
    
            $res['code'] = 0;
            $res['msg'] = "数据表名已存在,请更换名称。";
            die(json_encode_lockdata($res));
        }

        //创建数据;
        $db->insert('subtables', array('tb_name' => $tb_name, 'tb_use' => 0, 'tb_times' => $tb_times));

        //创建分表;
        $sql = "CREATE TABLE IF NOT EXISTS `" . $CONF['db_prefix'] . 'user_' . $tb_name . "` (
        `user_id` int(11) NOT NULL,
          `user_ticket` varchar(64) DEFAULT NULL COMMENT '学号',
          `user_phone` varchar(32) DEFAULT NULL COMMENT '手机',
          `user_name` varchar(32) DEFAULT NULL COMMENT '姓名',
          `user_pwd` varchar(64) DEFAULT NULL COMMENT '密码',
          `user_gender` varchar(32) DEFAULT NULL COMMENT '性别',
          `user_nation` varchar(32) DEFAULT NULL COMMENT '民族',
          `user_cet` varchar(32) DEFAULT NULL COMMENT '四六级',
          `user_card` varchar(32) DEFAULT NULL COMMENT '身份证',
          `user_campus` varchar(64) DEFAULT NULL COMMENT '所在校区',
          `major_id` int(11) DEFAULT '0' COMMENT '学院Id',
          `user_work` varchar(255) DEFAULT NULL COMMENT '学院',
          `user_class` varchar(32) DEFAULT NULL COMMENT '班级',
          `user_time` int(11) DEFAULT NULL COMMENT '注册时间',
          `user_photo` varchar(255) DEFAULT NULL COMMENT '证件照',
          `user_sms` int(2) DEFAULT '0' COMMENT '短信发送次数',
          `user_verify` int(2) DEFAULT '0' COMMENT '0未报名1已报名2已审核',
          `user_pay` int(2) DEFAULT '0' COMMENT '0未交费1已缴费',
          `user_status` int(2) DEFAULT '0' COMMENT '1已注册2已认证3已完善4已缴费5已通过',
          `user_ip` varchar(255) DEFAULT NULL COMMENT 'ip',
          `user_agree` int(2) NOT NULL DEFAULT '0' COMMENT '0未验证1已验证',
          `user_period` varchar(64) DEFAULT NULL COMMENT '用户批次',
          `user_salt` varchar(64) DEFAULT NULL,
          `user_city` varchar(32) DEFAULT NULL COMMENT '地级市',
          `user_area` varchar(32) DEFAULT NULL COMMENT '地区',
          `user_province` varchar(32) DEFAULT NULL COMMENT '省份',
          `exam_no` varchar(255) DEFAULT NULL COMMENT '准考证号',
          `exam_times` varchar(255) DEFAULT NULL COMMENT '考试时间',
          `exam_place` varchar(255) DEFAULT NULL COMMENT '考试地点',
          `exam_class` varchar(255) DEFAULT NULL COMMENT '考场号',
          `exam_seat` varchar(255) DEFAULT NULL COMMENT '座位号',
          `exam_prepare` varchar(255) DEFAULT NULL COMMENT '备考室',
          `exam_notice` text COMMENT '考生须知'
        ) ENGINE=InnoDB AUTO_INCREMENT=4457 DEFAULT CHARSET=utf8 COMMENT='信息表';";
        $row = $db->queryall($sql);

        $res['code'] = 1;
        $res['msg'] = "数据分表创建成功,请在conf/config中配置切换";
        die(json_encode_lockdata($res));

        //操作日志;
        addlogs($_COOKIE["admin_name"], $tb_name . '数据分表创建,STATUS:OK', '', time(), getip());
        break;

删除数据分表

//删除数据分表;
    case "del";
        $tb_id = get_param('tb_id');
        $tb_name = get_param('tb_name');
        if (is_array($tb_id)) {
    
    
            $tb_id = implode(",", $tb_id);
        }
        if ($tb_id == '') {
    
    
            die("tb_id错误");
        }
        //删除记录;
        $db->delete('subtables', 'tb_id in(' . $tb_id . ')');

        //删除数据表;
        $sql = "DROP TABLE IF EXISTS " . $CONF['db_prefix'] . $tb_name;
        $row = $db->queryall($sql);

        //操作日志;
        addlogs($_COOKIE["admin_name"], $tb_id . '数据分表删除,STATUS:OK', '', time(), getip());
        break;

@漏刻有时

猜你喜欢

转载自blog.csdn.net/weixin_41290949/article/details/129273676
今日推荐