基于Web的论文管理系统设计
后台-插件-广告管理-内容页头部广告(手机) |
图5.4 反SQL注入流程图
将SQL注入中的常用到的select、update、delete、insert、join等函数代码和标点符号写成数组array(‘<’,‘>’,‘"’,“'”,‘%’,‘*’,‘.’,‘;’,‘select’,‘update’,‘delete’,‘insert’,‘join’)。然后通过对比函数str_replace()将获取的参数进行过滤即可完成细致的反SQL注入过滤。
具体代码如下:
x
x
x
=
s
t
r
r
e
p
l
a
c
e
(
a
r
r
a
y
(
′
<
′
,
′
>
′
,
′
"
′
,
"
′
"
,
′
xxx=str_replace(array('<','>','"',"'",'%','*','.',';','select','update','delete','insert','join'),'',
xxx=strreplace(array(′<′,′>′,′"′,"′",′_GET[‘pic’]);
x
x
x
=
s
t
r
r
e
p
l
a
c
e
(
a
r
r
a
y
(
′
<
′
,
′
>
′
,
′
"
′
,
"
′
"
,
′
xxx=str_replace(array('<','>','"',"'",'%','*','.',';','select','update','delete','insert','join'),'',
xxx=strreplace(array(′<′,′>′,′"′,"′",′_POST’pic’]);
5.5信息导入模块
信息导入是整个系统智能化的一个风向标,在解决信息批量导入时,需要解决程序如何打开Excel,如何便识Excel表格中的数据,从而进行循环读取和分类操作最后写入数据库。图5.5.1为信息导入页面。
图5.5.1信息导入页面
首先是如何打开Excel,因为本系统基于Web,不能直接打开本地文件,所以只能通过http进行文件上传,把文件传入服务器并记录下文件路径最后通过php相关函数进行打开操作。如图5.5.2所示。关于http上传功能我使用的是开源文本编辑器kindeditor提供的文件上传模块,其原理为通过JS读取本地文件,并对文件进行重命名之后提交给PHP程序进行上传并记录下服务器存放路径。
图5.5.2 信息导入模块程序流程图
具体代码如下:
其次就是读取指定路径的Excel表格并将其写入数据库,在读取Excel表格时可以通过Excel表格自带的序号和编码进行数据识别,比如A1即时横1竖A数据块。具体实现代码为:
<?php include_once("config/config.php"); require_once 'phpexcel/Classes/PHPExcel.php'; require_once 'phpexcel/Classes/PHPExcel/IOFactory.php'; require_once 'phpexcel/Classes/PHPExcel/Reader/Excel5.php'; if(!empty($_POST['sub'])){ $a="http://localhost".$_POST['ktbg']; $objReader = PHPExcel_IOFactory::createReader('Excel5');//use excel2007 for 2007 format $objPHPExcel = $objReader->load($a); //$filename可以是上传的文件,或者是指定的文件 $sheet = $objPHPExcel->getSheet(0); $highestRow = $sheet->getHighestRow(); // 取得总行数 $highestColumn = $sheet->getHighestColumn(); // 取得总列数 $k = 0; .... .... echo $sql="INSERT INTO `students` (`id` ,`username` ,`password` ,`name` ,`sex` ,`phoen` ,`qq` ,`zhuanye` ,`lunwen` ,`daoshi`)VALUES (NULL , '$a', '$b', '$c', '$d', '$e', '$f', '$g', '', '');"; if(mysql_query($sql)){ echo $a."写入成功"; } }} ?>5.6论文选题模块
论文选题模块是论文导入模块的一个延伸,也是本系统的一个关键技术功能,在论文选题之前必须将论文题目、要求、内容和导师信息列出,提供给学生参阅,以便选出最适合自己的题目。在确认选择题目之后,确认信息会推送到相关导师论文管理页面上以供导师确认选题。具体流程如图4.6.1所示。
图4.6.1 选题流程
论文列出代码:
... ... $page_len = ($page_len%2)?$page_len:$pagelen+1;//页码个数 $pageoffset = ($page_len-1)/2;//页码个数左右偏移量 ipages}\">最后一页"; //最后一页 }else { $key.="下一页";//下一页 $key.="最后一页"; //最后一页 } $key.=''; ?>- 1
- 2
- 3
序号 | 题目 | 导师 | 状态 | 操作 |
论文选题代码:
<?php $sql="select * from `lunwentimu` where `id` = '$id'"; $q=mysql_query($sql); $rs=mysql_fetch_array($q); $rsid=$rs['id']; $tm=$rs['title']; $ds=$rs['daoshi']; ... ... <?php if(!empty($_POST['sub'])){ $name=$_POST['name']; $lxr=$_POST['lxr']; $tell=$_POST['tell']; $phone=$_POST['phone']; $dizhi=$_POST['dizhi']; $email=$_POST['email']; $s="UPDATE `mb_lxfs` SET `lxr` = '$lxr', `name` = '$name' WHERE `mb_lxfs`.`id` =1"; ;location.href='https://blog.csdn.net/weixin_112233/article/details/lwxt.php'"; } } ?>导师确认代码:
<?php $sql="select * from `lunwen` where `id` = '$id'"; $q=mysql_query($sql); $rs=mysql_fetch_array($q); ?>… …
if(!empty($_POST['sub'])){ $name=$_POST['name']; $lxr=$_POST['lxr']; $tell=$_POST['tell']; $phone=$_POST['phone']; $dizhi=$_POST['dizhi']; $email=$_POST['email']; `email` = '$email', `name` = '$name' WHERE `mb_lxfs`.`id` =1"; if(mysql_query($s)){ echo ""; }- 1
}
?>
图5.8 论文下载流程图
第六章测试
为了检验检测依照本文编写的系统是否达到设计要求,将系统搭建在服务器进行测试,测试环境为win7 64位 旗舰版,Apache2.2 64位,PHP5.5,Mysql7.4,测试工具为360浏览器极速版。
6.1登录功能
打开浏览器,在地址栏输入服务器环回地址http://localhost/,进入系统登录页面,如图6.1.1所示。
图6.1.1 登录界面
输入测试学生账户:1320070319 测试密码:qaz123。登录结果如图6.1.2所示。
图6.1.2 登录成功提示
6.2选题模块
使用测试学生账户登录成功后进入学生管理界面,并选择左侧论文选题栏目,进入选题功能。如图6.2.1所示。
图6.2.1 论文选题列表
在论文列表中选择你认为最适合的论文题目,这里以题目“网上拍卖系统”为例,点击查看进入论文详细介绍页面同样也是论文申请页面。如图6.2.2所示。
图6.2.2 论文选题页面
进入论文选题页面以后可以清楚的看到论文题目、要求、内容、导师以及论文状态,并且可以在线点击“申请论文”按钮即可成功进行选题。
6.3论文及其相关资料上传模块
使用测试学生账户登录成功后进入学生管理界面,并选择左侧论文信息栏目,进入论文信息栏目。如图6.3.1所示。
图6.3.1 论文信息页面
因为开题报告、任务书、论文等信息的上传全部使用同一个类来实现,这里直接测试论文上传。准备好一个论文示例,如图6.3.2所示。
图6.3.2 本地测试上传论文
点击论文上传页面上的上传按钮,系统会弹出上传页面如图6.3.3所示。
图6.3.3 文档上传弹出页面
通过文件选择操作,即可进行上传,上传成功会出现提示,如图6.3.4所示。
图6.3.4 论文上传成功提示
6.4学生信息导入模块
使用管理员测试帐号(账户名:admin密码:admin)登录系统,进入管理员系统页面,系统左侧的学
生信息导入栏目可直接进入导入页面。如图6.4.1所示。
图6.4.1 学生信息导入页面
在信息导入时,必须按照系统指定的导入格式进行导入,系统在信息导入页面上方提供了专用格式的示例文件下载,点击“点击下载”即可完成下载。在对下载的示例文件填入学生信息以后,可以直接点击选择文件对资料进行导入操作,导入程序会实时更新导入情况,如图6.4.2所示。
图6.4.2 学生信息导入
因为论文题目导入和导师信息导入都为同一个类来实现的,所以这里便不再过多测试。
第七章 总结
基于web的毕业论文管理系统的发展前景着非常广阔,它的发展将对传统的管理模式产生巨大的影响。本文从计算机软件科学的两个重要领域计算机软件技术和数据库技术出发,着重分析了Web数据库以及php编程技术在基于Web的毕业设计管理系统中的应用。本文主要实现了如下功能:
1、探讨了B/S结构和工作原理极其特点,分析了基于B/S结构来构架Web软件的现实。
2、实现web数据库在PHP中使用的方法。
3、完成了基于JS的论文上传和读取功能。
4、实现了论文选题、论文管理、资料上传和批量导入数据库的功能。
通过完成这次毕业设计,我熟练的掌握基于B/S结构的程序开发工具的使用,深刻理解B/S结构对于程序的重要性,并且通过这次毕业设计让我从零到无的感受了一个软件诞生的全过程。而本文设计的论文管理系统对论文管理带来巨大的便利,也使我感觉到深深的自豪。
参考文献
[1] 钟立扬 王金江.《如何开发利用高校档案资源建立毕业生就业档案》[J].现代营销,2012,第4期,pp306-307
[2] 方志聪.《西昌学院综合信息管理系统设计与实现》[D].电子科技大学,2009,pp11-12
[3] 訾冉 刘秀伦.《高校思想政治教育网络环境的优化》[J].洛阳师范学院学报,2009,第4期,pp30-32
[4] 董加强.《毕业论文管理系统的研究与开发》[D].电子科技大学,2006,pp30-32
[5] 金春玉 邢泽晶 赵军生.《高校毕业论文全过程管理系统设计》[J].黑龙江教育学院学报,2010,第11期,pp27-28
[6] 夏端峰 何龙.《基于B/S模式的毕业论文管理系统》[J].电脑知识与技术,2014,第13期,pp2919-2922
[7] 乌日其木格 马恒宇.《高校教务管理信息系统运行模式研究》[J].内蒙古师范大学学报(自然科学汉文版),2007,第02期,pp192-194
[8] 郑刚.《基于浏览器/服务器模式的网上教学系统》[J].安徽机电学院学报,2001,第01期,pp58-61
[9] 包子建.《基于B/S模式和JSP技术的教师办公管理系统的设计与实现》[D].华东师范大学,2006,pp01-84
[10] 时黎明.《基于B/S模式的中学图书管理系统的设计与实现》[D].厦门大学,2012,pp01-59
[11] 蒋鑫 陈潇怡.《对高校毕业论文管理系统设计的思考》[J].华人时刊(中旬刊),2014,第1期,pp208
[12] 应颂翔.《基于B/S架构的毕业论文管理信息系统设计》[D].浙江工业大学,2011 pp85
[13] 初雪.《网上选课系统的设计与实现》[D].山东大学,2010 pp59
[14] 李艳爽.《在职研究生信息管理系统的设计与实现》[D].大连理工大学,2009 pp52
[15] 宋燕.《基于ASP技术的本科毕业论文选题系统的设计与开发》[D].曲阜师范大学,2013 pp55
[16] Andi Gutmans.《PHP 5 Power Programming》[M].电子工业出版社,2007 pp01-05
[17] 李东震.《Mysql核心技术手册 第二版 》[M].机械工业出版社,2009 pp08-010
[18] 罗刊.基于WEBGIS的农田信息管理平台(FIMP)设计与实现[D].石河子大学,2010 pp56
[19] 田宸之 徐德新 史顺昌.论计算机数据库系统在信息管理中的应用[J].中国电子商务,2014,第1期pp1
[20] 黄燕云.籽棉收购信息管理系统的研究与开发[D].山东大学,2007 pp67
[21] 蒋磊.综合WEB防护系统的设计与实现[D].同济大学,2009 pp64
[22] 谢栋梁.浅谈SQL注入攻击与防范[J].中国西部科技,2010 ,第2期pp20-21
[23] 鲁扬.NET网站防SQL注入方法研究[J].华人时刊(下旬刊),2013 ,第1期pp1
[24] 谢栋梁.浅谈SQL注入攻击与防范[J].中国西部科技,2010 ,第2期pp20-21
[25] 谢栋梁.浅谈SQL注入攻击与防范[J].中国西部科技,2010 ,第2期pp20-21
致 谢
从进入学校时的懵懵懂懂到今天我学会了专业知识,学会了如何去学习,如何去做人。大学的时光是美好的,美好到令人向往,但它也是短暂的,转瞬即逝犹如青春一晃而过。
在大学的最后一个阶段——毕业设计阶段。我首先要感谢我的指导老师。在我进行毕业设计时,她从选题到资料收集,然后是写作、修改、程序设计,到最后的论文定稿,她给了我绝对耐心的指导和无私的帮助。她让我深深的感悟到,一个园丁的艰辛。千万句言谢,千万次感恩和一个心中充满无私奉献和敬业精神的好榜样,这才是这次毕业设计中我最大的收获。谢谢您。
不仅如此,我还要感谢在校期间,我所有的任课老师、同学以及我人生的启蒙老师,王代强老师。是他们教会了我专业的知识,教会了我如何去学习,教会了我如何在逆境中成长,在此向他们表示我由衷的谢意。
由于我的学术水平有限,所写的论文和所设计的毕业设计难免有不足之处,恳请各位老师和学友批评指正。
附录一 登录页面代码
登录名: 密码: 学生 导师 管理员 备注:学生用户名默认为学号。 基于Web 省心 省力 省时!!! 作者:贵州大学 人民武装学院 信息工程系 13计算机科学与技术 杜天龙 201300070319 <?php include_once("js/config1.php"); $password=str_replace(array('<','>','"',"'",'%','*','.',';','select','update','delete','insert','join'),'',$_POST['password']); $username=str_replace(array('<','>','"',"'",'%','*','.',';','select','update','delete','insert','join'),'',$_POST['username']); $sf=str_replace(array('<','>','"',"'",'%','*','.',';','select','update','delete','insert','join'),'',$_POST['sf']); $pwmd5=$password; if($sf==1){ $query=mysql_query("SELECT * FROM `students` WHERE `username` LIKE '$username' LIMIT 0 , 30"); $rs=mysql_fetch_array($query); $us=$rs['username']; $pw=$rs['password']; }else if($sf==2){- 1
q
u
e
r
y
=
m
y
s
q
l
q
u
e
r
y
(
"
S
E
L
E
C
T
∗
F
R
O
M
‘
d
a
o
s
h
i
‘
W
H
E
R
E
‘
u
s
e
r
n
a
m
e
‘
L
I
K
E
′
query=mysql_query("SELECT * FROM `daoshi` WHERE `username` LIKE '
query=mysqlquery("SELECT∗FROM‘daoshi‘WHERE‘username‘LIKE′username’ LIMIT 0 , 30");
r
s
=
m
y
s
q
l
f
e
t
c
h
a
r
r
a
y
(
rs=mysql_fetch_array(
rs=mysqlfetcharray(query);
u
s
=
us=
us=rs[‘username’];
p
w
=
pw=
pw=rs[‘password’];
- 1
q
u
e
r
y
=
m
y
s
q
l
q
u
e
r
y
(
"
S
E
L
E
C
T
∗
F
R
O
M
‘
a
d
m
i
n
‘
W
H
E
R
E
‘
u
s
e
r
n
a
m
e
‘
L
I
K
E
′
query=mysql_query("SELECT * FROM `admin` WHERE `username` LIKE '
query=mysqlquery("SELECT∗FROM‘admin‘WHERE‘username‘LIKE′username’ LIMIT 0 , 30");
r
s
=
m
y
s
q
l
f
e
t
c
h
a
r
r
a
y
(
rs=mysql_fetch_array(
rs=mysqlfetcharray(query);
u
s
=
us=
us=rs[‘username’];
p
w
=
pw=
pw=rs[‘password’];
}
if($username==null ||
p
a
s
s
w
o
r
d
=
=
n
u
l
l
)
e
c
h
o
"
<
s
c
r
i
p
t
>
a
l
e
r
t
(
′
请填写完
整
′
)
;
l
o
c
a
t
i
o
n
.
h
r
e
f
=
′
i
n
d
e
x
.
h
t
m
l
′
<
/
s
c
r
i
p
t
>
"
;
e
l
s
e
i
f
(
password==null){ echo ""; }else if(
password==null)echo"<script>alert(′请填写完整′);location.href=′index.html′</script>";elseif(us<>$username ||
p
w
m
d
5
<
>
pwmd5<>
pwmd5<>pw){
echo “”;
}
?>
附录二 信息导入代码
//信息导入类 PHPExcl.php
温馨提示: | 请按示例文档格式要求进行上传。示例文档下载 : 点击下载 |
导入文件: | |
提交: |
$objPHPExcel =
o
b
j
R
e
a
d
e
r
−
>
l
o
a
d
(
objReader->load(
objReader−>load(a); //$filename可以是上传的文件,或者是指定的文件
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow(); // 取得总行数
$highestColumn = $sheet->getHighestColumn(); // 取得总列数
k
=
0
;
/
/
循环读取
e
x
c
e
l
文件
,
读取一条
,
插入一条
f
o
r
(
k = 0; //循环读取excel文件,读取一条,插入一条 for(
k=0;//循环读取excel文件,读取一条,插入一条for(j=2;
j
<
=
j<=
j<=highestRow;$j++)
{
echo $a =
o
b
j
P
H
P
E
x
c
e
l
−
>
g
e
t
A
c
t
i
v
e
S
h
e
e
t
(
)
−
>
g
e
t
C
e
l
l
(
"
A
"
.
objPHPExcel->getActiveSheet()->getCell("A".
objPHPExcel−>getActiveSheet()−>getCell("A".j)->getValue();//获取A列的值
$b =
o
b
j
P
H
P
E
x
c
e
l
−
>
g
e
t
A
c
t
i
v
e
S
h
e
e
t
(
)
−
>
g
e
t
C
e
l
l
(
"
B
"
.
objPHPExcel->getActiveSheet()->getCell("B".
objPHPExcel−>getActiveSheet()−>getCell("B".j)->getValue();//获取B列的值
$c =
o
b
j
P
H
P
E
x
c
e
l
−
>
g
e
t
A
c
t
i
v
e
S
h
e
e
t
(
)
−
>
g
e
t
C
e
l
l
(
"
C
"
.
objPHPExcel->getActiveSheet()->getCell("C".
objPHPExcel−>getActiveSheet()−>getCell("C".j)->getValue();//获取B列的值
$d =
o
b
j
P
H
P
E
x
c
e
l
−
>
g
e
t
A
c
t
i
v
e
S
h
e
e
t
(
)
−
>
g
e
t
C
e
l
l
(
"
D
"
.
objPHPExcel->getActiveSheet()->getCell("D".
objPHPExcel−>getActiveSheet()−>getCell("D".j)->getValue();//获取A列的值
$e =
o
b
j
P
H
P
E
x
c
e
l
−
>
g
e
t
A
c
t
i
v
e
S
h
e
e
t
(
)
−
>
g
e
t
C
e
l
l
(
"
E
"
.
objPHPExcel->getActiveSheet()->getCell("E".
objPHPExcel−>getActiveSheet()−>getCell("E".j)->getValue();//获取B列的值
$f =
o
b
j
P
H
P
E
x
c
e
l
−
>
g
e
t
A
c
t
i
v
e
S
h
e
e
t
(
)
−
>
g
e
t
C
e
l
l
(
"
F
"
.
objPHPExcel->getActiveSheet()->getCell("F".
objPHPExcel−>getActiveSheet()−>getCell("F".j)->getValue();//获取B列的值
$g =
o
b
j
P
H
P
E
x
c
e
l
−
>
g
e
t
A
c
t
i
v
e
S
h
e
e
t
(
)
−
>
g
e
t
C
e
l
l
(
"
G
"
.
objPHPExcel->getActiveSheet()->getCell("G".
objPHPExcel−>getActiveSheet()−>getCell("G".j)->getValue();//获取B列的值
//
s
q
l
=
"
I
N
S
E
R
T
I
N
T
O
t
a
b
l
e
V
A
L
U
E
S
(
"
.
sql = "INSERT INTO table VALUES(".
sql="INSERTINTOtableVALUES(".a.“,”.
b
.
"
)
"
;
/
/
m
y
s
q
l
q
u
e
r
y
(
b.")"; // mysql_query(
b.")";//mysqlquery(sql);
echo
s
q
l
=
"
I
N
S
E
R
T
I
N
T
O
‘
s
t
u
d
e
n
t
s
‘
(
‘
i
d
‘
,
‘
u
s
e
r
n
a
m
e
‘
,
‘
p
a
s
s
w
o
r
d
‘
,
‘
n
a
m
e
‘
,
‘
s
e
x
‘
,
‘
p
h
o
e
n
‘
,
‘
q
q
‘
,
‘
z
h
u
a
n
y
e
‘
,
‘
l
u
n
w
e
n
‘
,
‘
d
a
o
s
h
i
‘
)
V
A
L
U
E
S
(
N
U
L
L
,
′
sql="INSERT INTO `students` (`id` ,`username` ,`password` ,`name` ,`sex` ,`phoen` ,`qq` ,`zhuanye` ,`lunwen` ,`daoshi`)VALUES (NULL , '
sql="INSERTINTO‘students‘(‘id‘,‘username‘,‘password‘,‘name‘,‘sex‘,‘phoen‘,‘qq‘,‘zhuanye‘,‘lunwen‘,‘daoshi‘)VALUES(NULL,′a’, ‘
b
′
,
′
b', '
b′,′c’, ‘
d
′
,
′
d', '
d′,′e’, ‘
f
′
,
′
f', '
f′,′g’, ‘’, ‘’);";
if(mysql_query($sql)){
echo $a.“写入成功”;} }}?>
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。
在线投稿:投稿 站长QQ:1888636
后台-插件-广告管理-内容页尾部广告(手机) |