毕业论文——焕延网站技术工作室官网设计与开发 —后台开发_第1页
毕业论文——焕延网站技术工作室官网设计与开发 —后台开发_第2页
毕业论文——焕延网站技术工作室官网设计与开发 —后台开发_第3页
毕业论文——焕延网站技术工作室官网设计与开发 —后台开发_第4页
毕业论文——焕延网站技术工作室官网设计与开发 —后台开发_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

全日制本科生毕业论文题 目: 焕延网站技术工作室官网设计与开发 后台开发 学 院: 计算机与信息科学学院 专业年级: 计算机科学与技术 学生姓名: 学号: 指导教师: 职称: 年 月 日焕延网站技术工作室官网设计与开发后台开发 摘 要:本网站采用ThinkPHP框架等技术开发的响应式官方博客网站。利用目前被多数企业采用的TP框架开发网站,能大大缩短了网站开发的时间,且有较大的可扩展性,可维护性,前端可完全自主设计,非常方便网站的开发。在本次的工作室官网开发中,实现了网站的登陆、登出、注册、博客发表、删除、修改管理以及企业形象展示的功能。关键词:ThinkPHP;GIT;MySQL;PHP;网站开发 Abstract:This site uses ThinkPHP framework and other technical development of the response of the official blog site. Use is currently the majority of enterprises to adopt the TP framework to develop the website, can greatly shorten the time of website development, and greater scalability, maintenance, front-end can be completely independent design, very convenient website development. In the studios official website development, website login, logout, registration, blog post, delete, change management and corporate image display function.Key words:bootstrap;ThinkPHP;GIT;MySQL;PHP;Website Development2015年是电子商务发展的关键一年也是令人期待的一年。随着国家“互联网”行动计划的实施,电子商务再次处在中国经济转型期备受关注的“风口”。个性化、专业化的网站需求日益增大,所以如何运用新技术在尽量短的时间内把网站开发出来成为网站开发工程师思考的问题之一。网站拥有高性价比并有着出色的用户体验,它可以作为Web应用,展示型网站,电商等形式存在,甚至目前大多数的手机应用的后台也是与网站的后台通用的。本人曾经接触过用Drupal框架给电脑与手机游戏开发的后台恰恰有力地证明了这一点。在如今的IT行业里的网站开发这一块,有着众多的后端开发框架,如由国人开发的ThinkPHP网站开发框架,自带CMS的Drupal框架,B2C电商解决方案框架Magento,Spring开源框架等等。本人的毕业设计是依靠ThinkPHP后端开发框架配合组员的前端开发来实现的。主要利用了MVC开发思想,以面向对象的方式开发后台,充分利用了ThinkPHP框架内置的函数,简化了开发的代码量,大大地降低了开发的时间成本。同时通过这次的毕业设计,为将来开发大型网站奠定了良好的开发基础。1 可行性分析目前世界流行互联网+和工业4.0,目的在于提升国家信息化程度,跟上世界发展潮流,而工业4.0则是产品的私人订制。我们小组为跟上信息化趋势,响应国家经济发展大方向,决定制作一个网站工作室官网,为将来商业化推广时积累经验。本人主要对该网站进行后台开发以及网站SEO优化,开发过程中主要运用到的技术有MVC框架开发技术,GIT版本管理系统,使用MySQL进行数据库管理。使用的开发工具包括PhpStorm、PhpMyAdmin数据库可视化管理系统、Xampp本地虚拟服务器用于调试、阿里云服务器搭配Ubuntu server服务器系统整合网站调试上线、Git版本管理工具进行团队协同开发以及版本管理为后续网站功能的添加完善提供仓库代码管理、使用ThinkPHP开发框架。本网站主要的功能实现有:网站产品案例展示、业内技术IT新闻的动态显示、首页工作室介绍、团队介绍、网站个人博客功能、网站后台管理系统的开发。1.1 可行性研究目前的社会正在快速地向信息化前进,对于未来来讲,一个网站技术的积累是可以有很大的成长空间的,并且现在网站开发的需求量很大,无论是个人还是企业都想挤进互联网为大家所熟知。所以,在网站开发这一块的市场是很大的,只要抓住机遇,通过不断地实践整合网站开发的各种技术,便能在市场上站稳脚跟。1.2 技术可行性本项目使用bootstrap+mysql+php工具开发,数据库使用mysql数据库,服务器使用阿里云服务器,运行ubuntu64系统,运用apt-get命令搭建LAMP服务器环境,并通过filezilla工具对www目录下的文件进行管理。在网站开发的过程用使用GIT工具来进行版本管理。GIT工具的好处以及教程在网上已有很多,在这里我便不再赘述。通过已掌握的这几种软件开发技术,在加上指导老师的悉心帮助,因此技术上是可行的。1.2.1 ThinkPHP框架和网站开发思想ThinkPHP是一个快速、简单的基于MVC和面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,尤其注重开发体验和易用性,并且拥有众多的原创功能和特性,为WEB应用开发提供了强有力的支持。本网站开发的思想是面向对象,使用MVC设计规范。MVC全名是Model View Controller,是模型(model)视图(view)控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制,这样有利于前端开发人员的开发。MVC 分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。例如,您可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。1.2.2 PHP7的特性介绍PHP是“PHP:Hypertext Preprocessor”的缩写,即“超文本预处理器”, 是一种功能强大,并且简便易用的脚本语言。PHP具有众多的特点,如:字符串与数组处理、URL的处理、正则表达式、单词拼写的处理、数据的串行化、对不同类型文件的支持、简便的数据库操作、目录与文件的操作等。对于未来的PHP7,相比之前的版本将会有很大的提升,主要如下:(1)性能提升:PHP7比PHP5.6性能提升了两倍。(2)全面一致的64位支持。(3)以前的许多致命错误,现在改成抛出异常。(4)移除了一些老的不在支持的SAPI(服务器端应用编程端口)和扩展。(5)新增了空接合操作符。(6)新增加了结合比较运算符。(7)新增加了函数的返回类型声明。(8)新增加了标量类型声明。(9)新增加匿名类。1.3 经济可行性本网站的开发所需资金主要是在服务器的租用上,未来也可能会购买服务器,开发运行后,管理员可以通过审核资料,控制网站内容的显示,审核通过后即可在首页看到更新,因此在经济上是绝对可行的。1.4 操作可行性本网站直观易懂,使用方便。本小组在设计的同时也包含了后台的CMS系统,目的是为了将来能简单地管理网站。管理员只要经过简单的培训,也可以轻松管理维护本网站。综上所述,从技术上、经济上、可操作性上都是可行的,而且要求不高,所以本网站的开发是可行的。2 需求分析 2.1 网站功能需求本网站属于企业形象展示类官网,附带博客文章发布系统。所以需要有良好的前端形象、响应式自适应展示、文章发布系统、文章管理、文章修改、文章删除。同时也提供用户登录和用户注册功能,在前端中判别用户是否登陆是否登陆以提供不同的功能以及不同的页面展示。2.2 运行环境(1) 操作系统:Ubuntu 64(2)支持环境:Apache、PHP、MySQL(3)数据库:MySQL(4)开发工具:PHPStorm、Git、PHPMyAdmin、Sublime Text 3、Xampp、FileZilla、Putty3 网站后端设计3.1 网站结构本项目主要为了研究和实施响应式网站的理论和积累开发经验,所以本论文以响应式网站为核心,以展示“网站技术工作室”的内容为载体来检验响应式网站的功能。具体的网站结构图如图3-1所示。图3-1 网站结构图3.2 后端设计Thinkphp框架的单一入口文件 本网站主要采用单一入口形式进行开发以及管理。使用Index.php文件入口进入网站主页。其他页面则使用Controller控制器以及Action方法实现不同页面的调用和后端逻辑的处理。如入口文件Index.php里面的内容为:?php/ +-/ | ThinkPHP WE CAN DO IT JUST THINK / +-/ | Copyright (c) 2006-2014 All rights reserved./ +-/ | Licensed ( /licenses/LICENSE-2.0 )/ +-/ | Author: liu21st / +-/ 应用入口文件/ 检测PHP环境if(version_compare(PHP_VERSION,5.3.0, 5.3.0 !);/ 开启调试模式 建议开发阶段开启 部署阶段注释或者设为falsedefine(APP_DEBUG,true);define(APP_NAME,Index);/ 定义应用目录define(APP_PATH,./Index/);/ 引入ThinkPHP入口文件require ./ThinkPHP/ThinkPHP.php;本段代码中用define函数定义应用的名称路径等内容,还可以打开开发模式,具体代码为:define(APP_DEBUG,true);在/Index/目录下拥有三个控制器分别展示主页、关于页和联系页,Index.php中默认调用Index控制器,其他控制器的调用着是通过URL的传参来实现的。具体调用展示About.html页的About控制器的URL路径为:https:/YourHost/Index.php/Home/About/ActionName如果About控制器内拥有一个Index方法且通过这个方法实现了About页面的调用展示则可以在url中不带Action名字,如:https:/YourHost/Index.php/Home/About其他的控制器的调用和方法载入也是以同样的方法来进行的。具体可以参考ThinkPHP3.2.3完全开发手册,在这里便不再赘述。4 ThinkPHP的MVC模式介绍4.1 平台搭建在Thinkphp官网下载Thinkphp3.2.3开发包后解压到xampp子目录下的htdocs文件夹里,配置好xampp本地虚拟服务器并设置好监听端口后用在浏览器中打开thinkphp框架的默认入口文件index.php即可完成thinkphp框架平台的搭建。4.2 MVC-视图(View)在由前端开发人员开发好前端页面后,有本人进行接口的调试、整合,使用闭合标签对页面信息进行输出以及维护。在ThinkPHP框架中对于视图集成了众多的模板功能。使用在视图中输出$name变量前需要在控制器中先使用$this-assign()函数对$name进行声明缓存。同时模板也自带了非常方便的系统变量输出方法,如:$Think.server.script_name / 输出$_SERVERSCRIPT_NAME变量$Think.session.user_id / 输出$_SESSIONuser_id变量$Think.get.pageNumber / 输出$_GETpageNumber变量$T / 输出$_COOKIEname变量其他的如常量输出:$Think.const.MODULE_NAME或者直接使用: $Think.MODULE_NAME配置输出:$Think.config.db_charset$Think.config.url_model语言变量:$Think.lang.page_error$Think.lang.var_error由于ThinkPHP内置了一个基于XML的性能卓越的模板引擎ThinkTemplate,这是一个专门为ThinkPHP服务的内置模板引擎,使用了XML标签库技术的编译型模板引擎,支持两种类型的模板标签,使用了动态编译和缓存技术,而且支持自定义标签库。其特点包括:(1)支持XML标签库和普通标签的混合定义;(2)支持直接使用PHP代码书写;(3)支持文件包含;(4)支持多级标签嵌套;(5)支持布局模板功能;(6)一次编译多次运行,编译和运行效率非常高;(7)模板文件和布局模板更新,自动更新模板缓存;(8)系统变量无需赋值直接输出;(9)支持多维数组的快速输出;(10)支持模板变量的默认值;(11)支持页面代码去除Html空白;(12)支持变量组合调节器和格式化功能;(13)允许定义模板禁用函数和禁用PHP语法;(14)通过标签库方式扩展。每个模板文件在执行过程中都会生成一个编译后的缓存文件,其实就是一个可以运行的PHP文件。模板缓存默认位于项目的Runtime/模块/Cache目录下面,以模板文件的md5编码作为缓存文件名保存的。如果在模板标签的使用过程中发现问题,可以尝试通过查看模板缓存文件找到问题所在。4.2.1 Smarty模板输出引擎Thinkphp自带TP模板输出引擎和smarty模板输出引擎。其中smarty模板引擎在世界范围内被使用最多的网站建设模板输出引擎,因此在本次开发中使用smarty作为模板输出的引擎。由于smarty引擎是被整合进thinkphp框架的,所以在变量输出前需要对变量进行assign()方法的处理。并且在引擎中附带了许多非常实用的内置标签。例如二维数组输出、和的变量空或非空判断输出处理、在模板文件中进行变量赋值等标签。例如标签,有表示在运行模板时,将会赋值一个值为123的var变量;value也支持变量的加载,如代表直接把系统变量赋值给var变量,相当于。在这个项目中,其中标签的具体应用如下:拿到未整合的原始前端代码时关于页首导航的一段代码是这样子的: Ulogreg登陆/注册 Ublog焕延博客 Ucontact联系我们 Uabout关于我们 在经过模板输出整合后: /判断变量userinfo是否为非空/如果非空则输出与标签之间的代码 欢迎您:$name Ulogoutaction退出登录 /如果为空则输出剩余的这些代码 Ulogreg登陆/注册 /标签停止,标签以外的内容不受影响 Ublog焕延博客 Ucontact联系我们 Uabout关于我们 4.3 MVC-模型(Model)在ThinkPHP中基础的模型类就是ThinkModel类,该类完成了基本的CURD、ActiveRecord模式、连贯操作和统计查询,一些高级特性被封装到另外的模型扩展中。模型的作用就是进行数据库操作。基础模型类的设计非常灵活,甚至可以无需进行任何模型定义,就可以进行相关数据表的ORM和CURD操作,只有在需要封装单独的业务逻辑的时候,模型类才是必须被定义的。在ThinkPHP的模型中带有众多的数据库处理函数,在这里举个简单例子:$User = M(User); / 实例化User对象$User-where(type=1 AND status=1)-select(); 最后生成的SQL语句是:SELECT * FROM think_user WHERE type=1 AND status=1本网站的开发使用了大量的SQL操作函数,极大地减少了代码量,同时使代码简单易懂。4.4 MVC-控制器(Controller)一般来说,ThinkPHP的控制器是一个类,而操作则是控制器类的一个公共方法。控制器主要的功能就是通过里面的代码逻辑对网站的不同页面以及功能进行输出。就好比如一个电视的遥控器,通过遥控器对电视的音量加减、换台等操作进行控制输出。下面就是一个典型的控制器类的定义:当访问http:/serverName/index.php/Home/Index/hello后会输出:hello!4.4.1 U()方法在本项目中我通过创建一个公共的函数assignurl(),代码如下:function assignurl()$Uinfo-Ureg =U(Home/Index/reg,html);$Uinfo-Uindex =U(Home/Index/Index,html);$Uinfo-Ulogreg =U(Home/Index/logreg,html);$Uinfo-Ublog =U(Home/Index/blog,html);$Uinfo-Uabout =U(Home/Index/about,html);$Uinfo-Ucontact=U(Home/Index/contact,html);$Uinfo-Uaddarticle=U(Home/Index/addarticle,html);$Uinfo-Uupdatearticle=U(Home/Index/updatearticle,html);$Uinfo-Uarticlemanage=U(Home/Index/articlemanage,html);$Uinfo-Udeletearticleaction=U(Home/Dataaction/deletearticleaction,html);$Uinfo-Uupdatearticleaction =U(Home/Dataaction/updatearticleaction,html);$Uinfo-Ulogaction =U(Home/Dataaction/logaction,html);$Uinfo-Uregaction =U(Home/Dataaction/regaction,html);$Uinfo-Ulogoutaction =U(Home/Dataaction/logoutaction,html); for($i=0;$iselect();$i+)$allarticle=D(blog)-select(); $Uinfo-Uarticledetail$i=U(Home/Index/articledetail,array(id=$allarticle$iid),html); return $Uinfo;先简单介绍一下U()方法。U()方法是一种url生成的方法,用于URL的动态生成,可以确保项目在移植过程中不受环境影响。使用例子:U(User/add) / 生成User控制器的add操作的URL地址U(Blog/read?id=1) / 生成Blog控制器的read操作 并且传递参数id/为1的地址U(Admin/User/select) / 生成Admin模块的User控制器的select操作/的URL地址U()方法支持伪静态后缀:U(Blog/cate,id=1,xml);该代码最后生成的地址是:http:/serverName/index.php/Home/Blog/cate/id/1.xml回到assignurl()函数中,我采用了json规范对每一个控制器及其下的每一个方法进行了URL动态生成并赋值给数组$Uinfo,然后在控制器中调用assignurl()函数并把返回的$Uinfo赋值给变量$U,通过$this-assign(U,$U)执行后能把Url在模板中输出。如在上面举到的smarty引擎的代码中就有Uabout关于我们,最后生成的代码为:关于我们。5 具体实现5.1 开发工具介绍PhpStorm是JetBrains公司开发的一款商业的 PHP 集成开发工具。PhpStorm可随时帮助用户对其编码进行调整,运行单元测试或者提供可视化debug功能。它具有众多的优点如跨平台、对PHP支持refactor功能,自动生成phpdoc的注释,非常方便进行大型编程、内置支持Zencode、生成类的继承关系图,如果有一个类,多次继承之后,可以通过这个功能查看他所有的父级关系、支持代码重构,方便修改代码、拥有本地历史记录功能(local history功能)、方便的部署,可以直接将代码直接upload到服务器。Sublime Text是一个代码编辑器,它最初被设计为一个具有丰富扩展功能的Vim,它的强大在于它拥有众多强大的扩展。在本次开发中主要使用此编辑器进行代码修整。在本次开发中采用phpstorm作为主要的开发工具,sublime text则在开发中用于对某个代码文件的修改,总体与细节的分工。Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包,我们使用它为我们在windows环境下搭建网站开发和调试环境。5.2 数据库设计本网站的数据库设计采用了6张表,包括管理员用户表mui_admin,博客文章内容表mui_blog,博客分类表mui_blogmenu,博客文章评论表mui_blogsort,博客文章标签表mui_blogtag,普通用户表mui_user,均采用mui_作为表前缀。表5.1 数据表预览表表名说明mui_admin管理员用户表mui_blog博客文章内容表mui_blogmenu博客分类表mui_blogsort博客文章评论表mui_blogtag博客文章标签表mui_user普通用户表具体表结构如下面几个表格所示。表5.2 mui_admin结构表Idtinyint16A_Tunsignedyes管理员用户唯一标识主键NameVarchar16管理员用户登录名Passwordvarchar32Md5加密后的登陆密码表5.3 mui_blog结构表字段名类型长度额外属性属性主键注释IdInt11A_Tyes文章唯一标识BlogmenuidInt11文章分类对应idTitleText文章标题ShortcontentText文章简介ContentText文章正文CreatdateDatetime文章写入时间User_idInt11文章所属用户idHotInt1默认0是否为热门IsownInt1默认1是否为原创SortInt3文章类型clicktimeTinyint32文章浏览次数表5.4 mui_blogmenu结构表字段名类型长度额外属性属性主键注释Idint12A_Tunsignedyes博客分类唯一标识Namevarchar32博客分类名称表5.5 mui_blogtag结构表字段名类型长度额外属性属性主键注释IdInt32A_TYes评论唯一标识BlogidInt16对应博客的唯一标识idUserInt16评论所有者sortlongtext评论内容表5.6 mui_blogsort结构表字段名类型长度额外属性属性主键注释IdInt32A_TYes主键索引idBlogidInt11对应博客的唯一标识idTag1Varchar16标签1Tag2Varchar16标签2Tag3Varchar16标签3Tag4Varchar16标签4Tag5Varchar16标签5表5.7 mui_user结构表字段名类型长度额外属性属性主键注释IdInt32A_TunsignedYes用户主键索引UsernameVarchar32用户登录名PasswordVarchar32密码CnnameVarchar40用户昵称MobilephoneVarchar15手机号EmailVarchar40邮箱useridVarchar32用户唯一长idcreattimeDatetime6用户创建时间具体的数据表结构关联图请看下图5-1。图5-1 表关联图5.3 后台逻辑实现本网站设计后台为三个控制器,分别为AdminController.class.php、DataactionController.class.php、IndexController.class.php。其中Admin控制器用于处理管理员后台的所有程序处理,例如视图输出、数据库操作、方法等操作,具体实现可视为以下两个控制器的综合统一。Index控制器则为非管理员用户界面的视图输出处理,例如输出更新文章这个页面的updatearticle()方法的具体代码为:/* * 修改文章页 * */public function updatearticle() /* * 判定session */ if($_SESSIONid!=) $id=$_SESSIONid; $userinfo=D(user)-where(id=$id)-select(); $this-assign(userinfo,$userinfo); else /* * 模板输出url */ $Uinfo=assignurl(); $this-assign(U,$Uinfo); /* * 搜索所有文章 */ /*相关文章*/ $arti=D(blog)-select(); $this-assign(arti,$arti); /*推荐文章*/ $artic=D(blog)-select(); $this-assign(artic,$artic); /* * 获取修改文章对象id及文章内容输出 */ $id=$_POSTid; $a=D(blog)-where(id=$id)-select(); $this-assign(a,$a); /* * 输出模板 */ $this-display(Public/header); $this-display(editarticle); $this-display(Public/footer);其中$this-display(Public/header);和$this-display(Public/footer);为输出普通用户界面的页头和页脚,采用公共模板输出,所有的在Index控制器里面的视图输出方法均会加载同一个header.html和footer.html文件。在一些涉及到数据库操作的页面中,会在模板文件的第一行开始加载checklogined()方法,通过判断session(id)是否存在来判断用户是否登陆。 如在修改文章的页面中,editarticle.html模板的第一行会有代码:方法checklogined()的代码为:function checklogined( )/判断session(id)是否为空,如为空则运行如下代码 if(session(id)=null) /输出字符串 echo /声明为javascript脚本代码 /弹出警告框,内容:请先登录alert(请先登录);/跳转到/muics/index.php/Home/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论