1、本 科 生 毕 业 设 计 报 告设 计 题 目 基于PHP的系网站建设及后台实现 学 生 姓 名 XX X 学 号 200XXXXXX 专 业 名 称 XXXXXXX 作品提交日期 XXXX年X月X日 申请学位级别 理学学士学位 作品评审等级 指导教师姓名 XXX 职 称 讲师 工 作 单 位 XXXXXXXX 学位授予单位 XXXXXXXXX XXXXXX理学院XXXXX年X月目 录1.引言12.系统简要说明13.系统总体设计13.1管理员模块13.2系统总体结构图13.3开发工具24.系统实现过程24.1数据库设计24.2前台页面的实现34.2.1网站的标志34.2.2主菜单34.2.3
2、导航菜单34.2.4新闻模块34.2.5图文模块44.2.6搜索功能的实现44.2.7滚动图片的读取44.3后台管理的实现54.3.1登陆模块54.3.2管理员模块54.3.3修改网站标志64.3.4一级菜单管理74.3.5导航菜单、图片内容和系内新闻管理85.系统效果图85.1前台页面效果图85.2后台页面效果图106.编程过程中的几个细节问题106.1 标题过长时的处理106.2 编码问题116.3 ID值的多次传递117.总结与收获128.致谢12参考资料13附录 数据表详细说明14附录 系统文件说明16基于PHP的系网站建设及后台实现XXX(XXXXXXXX系20XX级XXXX XX
3、XX XXXXXX)指导教师:XXX摘要:因特网已经成为一个信息发布的重要工具1。系级教学单位有各种信息发布的需求,如文档、新闻、通知等。网络上虽然有相关的CMS可以下载,但这些CMS在功能上过于繁杂,不适合学院系级教学单位使用。为此,我们开发了一个针对系级教学单位的内容管理系统,它提供了后台管理、信息发布等功能,通过它,学生和教师可以快速便捷的获取到相关信息。本系统实现了系内新闻、精品教案、资源下载、课外导读、学生活动、点击排行、学生作品、教师队伍、学生之星等功能模块,较适合学院系级单位的使用。关键词:因特网、信息发布、内容管理系统1.引言随着计算机技术和网络技术的不断发展,信息技术的应用已
4、经渗透到社会的各个领域,利用计算机来解决我们日常生活中的各种事务,可以使我们的生活更加方便、快捷2。现在我们也把这一技术引用到了校园,开发一个系网站信息发布平台,利用它来解决系内事务公布和各种通知并且可以向学生提供各种学习资源,引导学生更好的的利用网络资源,从而大大减少了学校的开支和各种不必要的麻烦,使学校的管理信息化,实现系内信息的快速传递,让教师和学生能够第一时间看到各种消息和通知。2.系统简要说明本网站采用Apache+MySQL+PHP这一技术框架来构建, 系统的使用对象分为普通用户和管理员两部分:普通用户的权限只能浏览站内的信息、并且大多数都是本系的教师和学生。管理员的权限是可以对后
5、台各种信息进行录入、维护和查询,如添加新闻公告,发布资源,修改图文等。本系统采用了比较人性化的界面,操作简单、直观、方便。3.系统总体设计3.1管理员模块管理员用户拥有网站管理的最高权限,后台管理的主要功能包括:网站标志管理、一级菜单管理、导航菜单管理、系内新闻管理、图片内容管理、滚动图片管理等部分。3.2系统总体结构图本网站的结构如图3-1所示:系网站管理系统普通用户管理员网站标志管理一级菜单管理导航菜单管理系内新闻管理图片内容管理滚动图片管理脚注信息管理添加一级菜单修改一级菜单添加导航菜单修改导航菜单添加系内新闻修改系内新闻添加图片内容修改图片内容添加滚动图片修改滚动图片添加脚注信息修改脚
6、注信息修改网站标志图3-1 系统总体结构图3.3开发工具本系统采用PHP语言来实现系网站的构建,使用这一技术的优点在于:PHP具有很好的移植性,可以很容易移植到不同的操作系统平台上;另外,PHP可以作为Apache服务器的一个模块,它与Apache两者结合花费代价很低,且有较好的性能价格比3。MYSQL是一个小巧的数据库服务器软件,执行效率高,占用资源少,对于中、小型应用系统是非常理想的3。它属于开放源代码软件,和PHP结合是一个经济实惠又高效的方案。本网站采用EclipsePHP Studio 2008和Macromedia Dreamweaver 8作为前台开发工具,MYSQL作为后台数据
7、库的管理系统,由于系统中涉及到大量图文混排的内容,所以本系统还使用了一个重要的辅助工具,即网页在线编辑器,本系统开发使用的是fckeditor编辑器,使用fckeditor编辑器的好处在于其功能强大且兼容性好。4.系统实现过程4.1数据库设计针对前台界面和后台管理的需求,本系统设计了7个表,分别为admin, daohang_menu,logo, main_menu,news,rollimages,tuwen分别用于存储管理员信息、导航菜单、logo标志(网站标志)、主菜单名称及其它、新闻管理模块、滚动图片模块、图文模块及其它信息,表的详细结构详见附录一。4.2前台页面的实现4.2.1网站的标
8、志实现读取网站标志的思路是在首页要显示网站标志的地方用一个img标签:img src= height=120 width=775 /将img的路径设为读取出来的路径,其中readlogopath.php的作用就是将网站标志的路径从logo表中的path字段中读取出来,这样就实现了网站标志的读取。4.2.2主菜单由于在设计存放主菜单的数据表时,用到了一个是否显示该菜单的字段disable,并指定disable值为1表示是显示该菜单,而disable值为0表示是隐藏该菜单,所以在查询时需要附加一个条件为disable=1,为了显示出来的效果符合界面要求,输出时限定只取出根据date降序排序后的8个
9、主菜单,sql语句如下:$sql=select * from main_menu where disable=1 order by date limit 8;echo $rowmenun;根据以上查询语句的结果将菜单名称格式化输出,这样就实现了主菜单的读取。4.2.3导航菜单读取导航菜单的原理与读取主菜单的原理基本相同,为了显示出来的效果符合要求,输出时限定只取出根据date降序排序后的5个导航菜单,sql语句如下:$sql=select * from daohang_menu order by date desc limit 5;根据以上查询语句的结果将菜单名称输出,这样就实现了主菜单的读取
10、。当然还涉及到数据的格式化输出,如下:echo .$rowmenu_mingcheng. ;将背景设置为images/smenuv2.jpg所指定的图片,并根据ID号链接到daohangdisable.php页面,最后将导航菜单的名称以居中对齐的方式输出。4.2.4新闻模块在数据表设计中,我们将首页面的系内新闻、精品教案、资源下载、课外导读、学生活动、网上党校、点击排行、学生作品八个模块的数据存放在一个数据表中,并设置了一个type字段用于区分它们所属的模块,在接下来的数据读取中我们就可以根据这个type字段来区分数据属于哪个模块,这样八个模块就可以被区分开。各个值所代表的模块如图4-1所示:
11、图4-1 各个值所代表的模块在news这个数据表中我们还用到了一个是否显示该新闻的字段fabu,并指定fabu值为1表示发布该新闻,而fabu值为0表示隐藏该新闻,所以在查询时需要附加一个fabu=1的条件,在读取新闻模块时就可以使用下面的SQL语句来实现:$sql=select * from news where type=0 and fabu=1 order by date desc limit 6;上面的type=0即指定了读取新闻模块,同时用limit子句限定只读取最新的6条记录。同理,其它的模块如精品教案、资源下载、课外导读、学生活动、网上党校、点击排行、学生作品模块就可以用不同的t
12、ype值来实现各个模块的读取。4.2.5图文模块图文模块又分为教师队伍和学生之星两个模块,同样使用了type字段来区分这两个模块,并指定type=0表示教师队伍模块,type=1表示学生之星模块。另外tuwen数据表中还有一个字段disable用于标识是否显示该图文。因此在查询数据时还需要加入一个disable=1的条件,具体实现查询的SQL语句如下:$sql=select * from tuwen where type=0 and disable=1 order by date desc limit 2;上述语句中type=0表示读取教师队伍这个模块,为了界面能较好的适应静态网页的框架,本处
13、只读取最新加入的2条数据。学生之星模块的数据读取与上述语句基本相同,只需把type=0改为type=1即可。4.2.6搜索功能的实现前台搜索表单的定义: 站内搜索 在上述定义的表单中,接收关键字的表单名称为key,因此后台实现搜索功能的页面首先应该获取这个搜索关键字,然后使用SQL语句中的like语句来匹配,语句如下:$sql=select * from news where title like %$key%;另外是将搜索结果中的关键字高亮显示,此处使用了preg_replace()函数将搜索结果中的关键字高亮显示,具体代码如下:$key=$_POSTkey;$row1title=preg_
14、replace(/($key)/i,1,$rowtitle);上述语句实现将搜索结果标题中的关键字显示为红色粗体。4.2.7滚动图片的读取滚动图片的读取其基本思想是将数据库中图片的路径、说明信息、宽度和高度分别赋值给img标签的src、alt、width、height属性,读取的多张图片放在一行的多个列中,最后用JavaScript脚本控制图片的滚动效果,具体的JavaScript脚本此处不在赘述。以下代码在SQL语句查询的基础上将图片格式化输出:echo n;以上语句为一行语句4.3后台管理的实现系统功能模块的实现主要分为:登陆模块、管理员模块。下面,就这两个模块分别进行详细解释,具体代码见
15、系统源程序。4.3.1登陆模块登陆模块流程图如图4-2所示:图4-2 登陆模块流程图4.3.2管理员模块管理员用户拥有网站管理的最高权限,后台管理的主要功能包括:网站标志管理、一级菜单管理、导航菜单管理、系内新闻管理、图片内容管理、滚动图片管理等部分。系统管理流程图如图4-3所示:添加一级菜单修改一级菜单添加导航菜单修改导航菜单添加系内新闻修改系内新闻添加图片内容修改图片内容添加滚动图片修改滚动图片修改网站标志添加脚注信息修改脚注信息管理员图4-3 系统管理流程图4.3.3修改网站标志此部分首先将原有的网站标志读取出来,然后在网站标志下面给出重新上传网站标志的表单,此页面为前后台合并,即没有P
16、OST变量时执行前台,而有POST变量时执行后台的图片上传操作。在将上传的图片存放到指定位置的同时,并将图片存放的路径写入数据库,执行上传操作的函数为:move_uploaded_file(string filename, string destination)move_uploaded_file()函数检查并确保由 filename 指定的文件是合法的上传文件(即通过 PHP 的 HTTP POST 上传机制所上传的文件)。如果文件合法,则将其移动到由 destination 指定的路径。此页面还有一个图片上传前的预览功能,思路是使用JavaScript脚本获取当前上传文件的路径,然后将其缩
17、略图显示出来,具体代码如下:function getFullPath(obj) if(obj) if (window.navigator.userAgent.indexOf(MSIE)=1) obj.select(); return document.selection.createRange().text; else if(window.navigator.userAgent.indexOf(Firefox)=1) if(obj.files) return obj.files.item(0).getAsDataURL(); return obj.value; return obj.value
18、; function yulan() var filePath =getFullPath(document.getElementById(UpFile); var fileText =filePath.substring(filePath.lastIndexOf(.),filePath.length); var fileName =fileText.toLowerCase(); if (fileName!=.jpg)&(fileName!=.gif)&(fileName!=.jpeg)&(fileName!=.png)&(fileName!=.bmp) alert(对不起,系统仅支持标准格式的
19、图片,请您调整格式后重新上传,谢谢 !); document.form1.UpFile.focus(); else document.getElementById(preview).innerHTML=;4.3.4一级菜单管理(1)、添加一级菜单本部分用到接收菜单名称、菜单颜色、是否显示该菜单和内容部分等几个表单,其中菜单颜色是通过调用windows自带的调色板并使用object对象来实现,由于本模块可能会涉及到大量的图文混排,所以可以使用在线编辑器的方法来实现图文混排,具体使用的是fckeditor编辑器。A、调用windows自带的调色板的代码如下var tempColor = 00000
20、0;function returnColor() var Hcolor = dlgHelper.ChooseColorDlg(tempColor).toString(16); with(event.srcElement) value = (Hcolor.length6)?000000.substring(0,6-Hcolor.length):) + Hcolor; style.backgroundColor = (Hcolor.length6)?000000.substring(0,6-Hcolor.length):) + Hcolor; tempColor = HcolorB、fckedit
21、or配置详细代码BasePath= $sBasePath ;$oFCKeditor-Width = 100% ; $oFCKeditor-Height = 450 ;$oFCKeditor-Value= ;$oFCKeditor-Create() ;?(2)、修改一级菜单修改原有菜单及其内容时,首先要将原有的值读取出来,然后显示在表单中,可在SQL查询后,将返回数组后的某个字段信息显示出来。如读取原有菜单的名称:请输入菜单名称:input type=text name=menu value=/再如读取下拉列表的原有值: option value=0 隐藏 option value=1 显示 即
22、如果fabu的原有值为0,则将隐藏这个值选中; 如果fabu的原有值为1,则将显示这个值选中。另外一个问题是fckeditor原有值的读取,在调试过程中,要将原有值读取到fckeditor编辑器作为初始值时,读取出来的值变成了HTML 代码,这时可以使用html_entity_decode()这个函数来转换后原有内容就能够正常显示。4.3.5导航菜单、图片内容和系内新闻管理这几部分的实现原理基本和一级菜单管理相同,都用到了用于接收各字段信息的表单,另外,调色板的调用和fckeditor的配置基本相同,此处不再赘述。只是在引用fckeditor时,应使用当前文件与fckeditor的相对路径。对
23、于涉及到有图片上传部分的管理时,应在表单加入enctype=multipart/form-data的语句,该语句可以支持文件上传操作。5.系统效果图5.1前台页面效果图前台页面效果图如图5-1和5-2所示:图5-1 前台运行效果图1图5-2 前台运行效果图25.2后台页面效果图后台部分页面效果图如图5-3所示:图5-3 后台部分页面效果图6.编程过程中的几个细节问题6.1 标题过长时的处理实现标题过长时用省略号代替,此处思路是首先定义一个样式,如下代码:li width:156px; line-height:25px; text-overflow:ellipsis; white-space:n
24、owrap; overflow:hidden;定义一个无序列表,在输出时就会得到如图6-1所示的效果。标题过长时用省略号代替的效果首先定义如上代码所示的宽度width:156px; 然后将超出的部分隐藏。即:overflow:hidden图6-1 标题过长时用省略号代替的效果图在格式化输出时用title属性输出完整标题(即鼠标移上去时就显示完整的标题)如下代码所示:echo$rowtitlen;6.2 编码问题MySQL从4.1版本开始,支持多种编码,包括我们熟知的 latin1、gbk、utf8、big5等,还有一些我们闻所未闻的编码方式。不管使用什么数据库版本,不管是3.x,还是4.0.x
25、还是4.1.x,其实对我们来说不太重要,我们只需注意两点即可:(1)、正确的设定数据库编码,MySQL4.0以下版本的字符集总是默认ISO8859-1,MySQL4.1在安装的时候会让我们选择。如果我们准备使用UTF- 8,那么在创建数据库的时候就要指定好UTF-8(2)、使用3.0.16以上版本的JDBC Driver,那么我们就不需要再写characterEncoding=UTF-8这样的语句。如果数据库服务器使用的是utf-8,那么,jdbc就会把数据库的内容用utf-8格式传到JVM中。如果数据库服务器中的某个数据库使用的编码是gbk,那么就会发生编码不一致的错误。这时,我们可以使用c
26、haracterEncoding=GBK强制使用gbk编码传递到JVM中。或者,我们也可以把整个MySQL数据库服务器的编码转变为gbk。在MySQL中,默认使用的是latin1,也就是ISO8859-1字符集编码。这是一种8位的编码,适用于所有西欧字符。而对于汉字等是不合适的。最好、最通用的编码格式是utf-8,这是一种8位的Unicode字符集。它对于8位的西欧字符集来说,比较节省空间,而又能够有效地表示汉字等字符。因此,将MySQL数据库服务器设置为utf-8格式,把所有的MySQL数据库也设置为utf-8格式,这是最佳的选择。但是,一些常用的MySQL工具无法显示utf-8格式的中文。
27、如MySQL自带的工具,MySQL-Front等软件。但是,MyManger和命令行下的MySQL是可以正常显示utf-8格式的中文的。如果,我们选择使用gbk,那么就应该把数据库服务器和数据库的编码格式全部转为使用gbk,否则可能会出现问题。为了解决乱码问题,我们可以在数据访问时加入一个语句:mysql_query(set names gb2312); gb2312表示指定访问数据库时所使用的字符集,当然也可以使用其它的字符集。6.3 ID值的多次传递我们都知道在id值传递的过程中,我们一般都以GET的方式来传递和获取,但id值在多次传递过程中,如果中间某次传递时我们不将其获取的话,那么在下
28、一次再使用到id值时就可能无法获取。在实现后台管理时,遇到的一个问题之一就是id值的多次传递,当要对数据库中的数据进行修改操作时,首先我们要将相应的数据读取出来,同时将id值也读取出来以使其它页面能够获取该页传递的id值,当我们点击某个链接跳转到相应页面后,那么这个页面首先应获取传过去的id值,再根据这个id值进行查询、更新、删除等操作。在实现某个模块的修改时,我们首先将数据库中的原有值一一列出来,每一条记录都对应着一个id值,进入具体的修改页面后,我们根据传过来的id号将原有值都查询出来后显示到表单中,当修改好要进行更新操作时我们发现,值无法更新,究其原因,就是更新操作时id值没有传递到操作
29、更新的页面,为此,我们在显示具体要修改的页面时,可以将id值放在一个隐藏域的表单中,更新的页面就可以用POST方式获取这个隐藏域的值,这样既避免了用户修改id值,又实现了id值的多次传递。7.总结与收获经过将近半年的努力,基于PHP的网站系统已经完成,实现了前台页面的正常显示和搜索功能以及后台的网站标志管理、一级菜单管理、导航菜单管理、系内新闻管理、图片内容管理、滚动图片管理等功能。虽然我对PHP语言有过近一年的学习,对其也有了一定的掌握,但所学内容并不全面,只用以前的所学知识对开发一个系统是远远不够的,因此只能在系统的开发过程中摸索学习,达到最终要求,这样在开发过程中也有了不少的收获。在此我
30、总结了以下几点经验:表达式的使用,javascript和PHP中的正则表达式功能都是一样的只是语法稍有不同,要学会灵活运用这两种方法,但要注意的是在javascript不要穿插PHP语句,这样编译的时候可能会出错。本网站基本能适应网站系统的初步需求,但是其中也有不足之处,主要表现在以下方面:A、代码重复率高,由于本网站基本都采用面向过程的开发模式,致使代码重复率高,这是源代码最大的不足点。B、系统的安全性不够高及严谨性不够严密。C、前台页面的搜索功能只实现了单关键字的搜索,如果能加入多关键字的支持将会更好。D、目前暂时还没有实现主菜单下的二级菜单,如果能加入二级菜单则网站将更适用。8.致谢首先
31、,在本设计完成之际,我要衷心感谢我的指导老师xxx,是他的悉心指引,我才能顺利的完成系网站的设计与开发。在此对xxx老师致以我最衷心的感谢和最崇高的敬意!四年的时间对于整个人生而言,也许是短暂而微不足道的。但即将过去的这个四年对我而言,却是人生中一个重要的里程碑,深刻而难忘。而在成长的过程中,众多的良师益友给予我生活上的关怀和照顾,学习上的指导和帮助以及思想上的鞭策和鼓励,使我终身难忘。四年的学习生活即将结束,我将要离开培养我成才的学校,去寻找属于自己的天空,众位老师的关怀和培育,使我从一个懵懂的高中生变成了今天羽翼渐丰的自我。我将自豪的走向社会.这与众多的老师的培养和同学的帮助是密不可分的,
32、我感谢帮助和关心过我的老师和同学,我感激你们,更感谢你们!参考资料1 齐克科、唐振云、王春森.利用PHP实现网上数据操作J.计算机教育应用,20012 Hugb E.Williams & David Lane PHP&MySQL Web数据库应用开发指南M中国电力出版社,20033 姜晓铭、张亮PHP程序设计与实例分析教程M北京:清华大学出版社,20054 张 枭PHP+MySQL+Dreamweaver网站建设典型案例M北京:清华大学出版社,20065 刘亚涛网站开发中使用PHP+MySQL技术J应用技术,20066 澳 Luke Welling ,Laura ThomsonPHP和MYSQ
33、L Web 开发M机械工业出版社,2006.57 刘亚涛网站开发中使用PHP+MySQL技术J应用技术,20068 (澳)Saied Tahaghoghi, 学习MySQL:英文 影印本,东南大学出版社, 2007.06.019 陈营辉PHP网络编程从入门到精通清华大学出版社,2007.710 PHP5与MySQL5Web开发技术详解/杜江编著.北京:电子工业出版社,2007.1111 赵鹤芹设计动态网页的最佳方案:pache+PHP+MySQLJ计算机过程与设计,200712 JavaScript全程指南/郭伟伟,刘端阳编著.北京:电子工业出版社,2008.313 陈 军PHP+MYSQL经
34、典案例剖析M清华大学出版社,2008.114 刘定林、孙海刚Dreamweaver+Flash+Photoshop网页制作 MA CMS For Institute Base on WebWei KaiDepartment of educational technology, Yuxi Normal University Yuxi 653100Supervisor: Shi Jun-Yi【Abstract】Information can be released and upgraded rapidly through Web. A CMS for institute base on web h
35、as been developed. It supports user management、resource downloading etc, user can get the news and notice through it. The system is composed by a series of model: institute news、teaching plan、resource downloading、students and teacher info, students works etc.【Keywords】Network Programming, Informatio
36、n, Department Website附录 数据表详细说明表4-1导航菜单表 daohang_menu字段字段说明类型空否默认属性说明id记录号int(11)NOTNULLauto_increment主键bg_tupian_path背景图片路径varchar(100)NOTdefaultmenu_mingcheng导航菜单名称varchar(10)YESNULL,body导航菜单内容longtextNOTNULLdisable是否显示tinyint(1)NOTNULL布尔型date菜单的添加日期dateNOTNULL自动获取time菜单的添加时间timeNOTNULL自动获取表4-2网站标
37、志图片管理logo 字段字段说明类型空否默认属性说明id记录编号int(3)否NULLauto_increment主键pathlogo标志存放的路径varchar(100)否NULLwidthlogo显示时的宽度int(11)否775heightlogo显示时的高度int(11)否120disable是否显示该logotinyint(1)否1布尔型beizhu备注信息varchar(300)否NULL表4-3管理员信息表admin字段字段说明类型空否默认属性说明id记录号int(3)否NULLauto_increment主键Username用户名Varchar30)否NULLPassword密码varchar(10)否NULL表4-4主菜单管理表main_menu字段字段说明类型空否默认属性说明id记录号int(5)NOTNULLauto_increment主键menu菜单名称varchar(20)NOTNULLdefaultmenucolor菜单颜色varchar(6)default000000