基于phpems开源考试系统开发无纸化考试系统
官方网站:http://www.phpems.net
示例安装本系统环境:nginx+PHP7.2+mysql

下载安装

获取安装包
解压安装包进入解压好的文件夹将phpems文件夹压缩成zip包
上传到服务器 /var/www/ 下,并解压。形成 /var/www/phpems 的目录结构
给phpems 设置权限 chmod -R 777 /var/www/phpems

配置数据库

进入mysql
创建数据库:
create database phpems default character set = ‘utf8mb4′ collate =’utf8mb4_general_ci’;
选择数据库
use phpems;
导入数据
source /var/www/phpems/pe6.sql;
创建数据库使用用户
create user ‘phpemser’@’%’ identified by ‘654321’;
给使用用户授权
grant all on ems.* to ‘phpemser’@’%’;

修改项目配置文件

进入配置目录
cd /var/www/phpems/lib
vim config.inc.php
将数据库配置修改为我们设置的数据库修改以下配置项:

define(‘DB’,’phpems’);//MYSQL数据库名
define(‘DH’,’127.0.0.1′);//MYSQL主机名,同一主机数据库不用改
define(‘DU’,’phpemser’);//MYSQL数据库用户名
define(‘DP’,’654321′);//MYSQL数据库用户密码

Nginx 配置文件参考

进入配置目录
/etc/nginx/sites-enabled
创建配置文件
touch phpems
编辑配置文件,内容如下
vim phpems

配置完成,重新加载nginx
/etc/init.d/nginx reload

访问

前台直接访问你的域名即可
访问后台地址:域名/index.php?core-master
默认管理员:
用户名:peadmin
密码:peadmin
具体操作可以查看下载安装包里的help文件夹下的内容

二次开发流程分析

原文链接:https://www.ctolib.com/topics-74262.html

phpems的模板后缀名为tpl,如果要修改模板页,在某个模块下的tpls目录中,而不是data里面 data中有html和compile目录

如新增试题url:http://localhost/phpems/index.php?exam-master-questions-addquestion&page=1

那模板页就是:phpems\app\exam\tpls\master\question_add.tpl

app文件目录下,是我们程序的主要部分,每个文件夹是一个应用,其中core文件夹和user文件夹是核心部分,不可删除。其他文件夹可以删除,基本互相不影响。 
我们以exam文件夹为例介绍应用结构 

先从.php文件开始,每个*.php文件属于该应用的一个入口,app.php为默认入口,我们通过下面的网址可以访问这个入口 
http://localhost/index.php?应用名-php文件名,如果php文件名不写的话,则默认app,例如:index.php?exam-teach指向的就是teach.php,而index.php?exam则指向的是app.php 

此处必须以app为名命名类 
__construct为该类的初始化函数,在该函数里做程序初始化的准备,如初始化某些对象等。 

每个公用方法都可以通过URL访问到,如index.php?exam-app-index,被访问的就是index方法了,在这个方法里可以写相关的功能,当没有Index参数时,如index.php?exam-app,程序会自动寻找Index方法并运行之,如果访问的方法不存在,则都定向到index方法上,如果Index方法不存在,程序将出错。 

如login方法,可以同过index.php?exam-app-login即可访问到。 

接下来介绍每个文件夹 
cls //应用的类库 
config和lang是用来保存一些设置和语言文件的,目前不起用 
styles //主题文件夹,下面包括css、images、js三个文件夹,分别保存不同的样式、JS和图片文件。 

tpls //模板文件夹,对于应用下不同文件要建立不同的文件夹,在对应文件夹下保存模板。如app.php文件对应的模板是tpls/app文件夹,master.php对应的是tpls/master文件夹。

教师导出成绩流程:
app\exam\teach.php
case ‘outscore’: //导出成绩
$rs = $this->favor->getAllExamHistoryByArgs($args,array(‘ehuserid’,’ehexam’,’ehusername’,’ehscore’,’ehstarttime’));//ehstarttime 开始考试时间

二次开发基础标签


原文链接:http://www.phpems.net/index.php?content-app-content&contentid=59

phpems使用了模板编译技术。编译后的文件保存在data目录下。
phpems模板标签以{x2;…..}的形式出现。

1、{x2;$var}该标签会被翻译为<?php echo 变量; ?>该变量必须为在php程序中被$this->tpl->assign过后的变量。

2、{x2;v:var}该标签会被翻译为<?php echo $var; ?>该变量是在php模板中产生的临时变量,不需要assign

3、{x2;c:const}该标签用于显示常量,注意,在以后的if,tree,loop等标签中,常量不需要c:,只在显示常量的本标签中需要c:

4、循环遍历tree标签是一个组合标签,用于遍历一个数组。规则如下{x2;tree:遍历变量,临时指针变量,循环次数变量}{x2;endtree}被程序转换为以下PHP代码<?phpforeach(遍历变量 =>临时指针变量){    ……}?>

5、逻辑判断if标签格式:{x2;if:判断语句}……{x2;elseif}……{x2;else}……{x2;endif}和php中的用法基本一致,程序将其转为如下代码:<?phpif(条件){……}else if{……}else{……}?>

最后修改日期:2020-05-27

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。