基于PHP的考研复习管理动态网站设计(Southwest Forestry University Big data and intelligent engineeringCollege Kunming 650224)Abstract: With the rapid development of Internet technology and website development technology, website provides some information needed by many users. The main research object of this paper is to establish dynamic website. This paper introduces how to build a dynamic website using PHP. Understand the use of PHP, on this basis also learned the related website development technology, such as HTML technology, database technology, etc. Then I studied the current PHP frameworks and chose to use Laravel among the many on the market. Finally, on Laravel framework, MySQL database is used to realize the design of dynamic website. In addition, this paper will start from the initial PHP environment installation, according to the front-end design and back-end design, using Ajax to achieve data refresh operation, so as to achieve dynamic website management. The dynamic website built in this paper is for the convenience of the students can get the basic information of the postgraduate entrance examination can also share their postgraduate entrance examination information, background management users can carry out simple operations on the data.Key Words: PHP;The website construction;One's deceased father grind review;目 录1 引言 11.1 PHP简介 11.2 Apache的简介 21.3 Mysql数据库简介 22 需求分析 32.1 需求信息的收集 32.2 分析整理 32.3 评审通过 33 总体设计 53.1 Laravel框架 53.2 Mysql数据库设计 64 详细设计 94.1 后台设计 94.2 普通用户 124.3 前台页面设计 144.4 论坛设计 175 测试报告 185.1 测试方案 185.2 测试过程 185.3 测试结果 18致谢 20参考文献 20指导教师简介 211 引言随着信息时代的到来,教育信息化成为了一股不可逆装的潮流,其中为了更好的规划自己的考研学习,考研复习管理网站成为了必不可少的。我认为其研究有以下作用:一、对要考研的同学们可以很好的看到相关信息。二、可以让考研的同学们计划自己的学习时间。三、有利于同学们相互学习,记录,提升学生自主管理性。根据我的了解,PHP代码开源,免费。可以跨平台,在多个操作系统运行。PHP更以为大家接收,相比在市场中占用比较多[1]。有丰富的系统函数库,常用操作可以直接调用系统函数库,不需要程序员自己去写。强大的数据库支持,可以支持MYSQL,SQLSERVER,ACCESS,ORACLE,DB2等多种数据库。有丰富的框架程序,丰富的二次开源程序。其中MySQL数据库使用比较常见,功能完善,运行速度快。基于以上说明,可以利用PHP和MYSQL数据库来进行网站开发,建立一个有着基本功能完善,方便管理和可以分享学习经验的网站。1.1 PHP简介PHP是能让你生成动态网页的工具之一。PHP 网页文件被当作一般HTML 网页文件来处理并且在编辑时你可以用编辑HTML的常规方法编写PHP[2]。PHP代表:超文本预处理器。PHP是完全免费的,不用花钱,你可以从PHP官方站点(http://www.php.net)自由下载[2]。PHP遵守GNU公共许可( GPL),在这一许可下诞生了许多流行的软件诸如Linux和Emacs[3]。你可以不受限制的获得源码,甚至可以从中加进你自己需要的特色。PHP在大多数Unix平台,GUN/Linux和微软Windows平台上均可以运行。怎样在Windows环境的PC机器或Unix机器上安装 PHP的资料可以在PHP官方站点上找到[4]。现在Windows平台上大多数使用的是Appserv,它本身包括了Apache+PHP+Mysql。可以满足市面上99%的公司,更新速度也很快。当下载安装好后,可以通过在计算机管理里面启动或者关闭Apache和MYSQL服务,当打开Apache服务后就可以在Appserv里面的WWW文件夹下写PHP代码。1.2 Apache的简介Apache是根据NCSA的服务器发展而来的,NCSA是最早出现的 WEB服务器程序之一,由伊利诺斯大学Urbana-Champaign分校的美国国家超级计算应用中心开发。在发展初期,Apache主要是一个基于UNIX系统的服务器,它的宗旨就是建成一个基于UNIX系统的、功能更强、效率更高并且速度更快的www服务器,这就决定了它是从其他的服务器演变而来的,并且添加了大量补丁来增强它在某一方面的性能,所以它就被命名为“APAtCHy Server (一个补丁组成的服务器)”。在Windows下使用的Apache服务器,要建立虚拟主机,首先要设置域名,就要修改本的DNS路由表在C:\Windows\System32\drivers\etc\hosts文件里面增加域名。然后在修改apache,AppServ\Apache24\conf\httpd.conf里面开启虚拟主机,然后修改AppServ\Apache24\conf\extra\httpd-vhosts.conf,重启服务后就可以在浏览器里面进行地址栏访问。1.3 Mysql数据库简介在当前有很多的数据库,Mysql是用的比较多的,比较方便的一种数据库。Mysql数据库可以称得上是目前运行速度最快的SQL语言数据库[5]。除了具有许多其它数据库所不具备的功能和选择之外, Mysql数据库是一种完全免费的产品,用户可以直接从网上下载数据库,用于个人或商业用途,而不必支付任何费用[5]。Mysql数据库设计有这几个点:数据表引擎,表字段类型,数据字段属性,Mysql服务器默认字符集,索引管理[6]。在数据库中我们通常是用SQL语句来操作数据,分别就是insert into ,delete,update,select(增,删,改,查)四种方法来管理数据。2 需求分析需求分析大致可分为三步来完成,即需求信息的收集、分析整理和评审通过。2.1 需求信息的收集考研网站的基本信息至少需要前后端用户,有前后端页面,前端需要一些考研的基本信息。后端有两级用户,管理员用户和普通用户。普通用户登录可以查看一些考研信息,分享自己的考研经验。管理员就是能查看用户列表和进行密码重置,对前端页面考研内容进行修改。管理员和普通用户一样都需要账号和密码,管理员是通过已经有的管理员进行手动添加,普通用户可以在网站页面进行注册。2.2 分析整理首先要了解网站的分布,管理,做一个动态网站要写网站的前后端。要确定大致范围和管理流程。考研网站主要是通过每年的考研信息进行管理,让人们进入网站的时候能对考研有一定了解,方便自己的复习,能对历年考研的过程和计划有一定了解。2.3 评审通过首先最基本的要完成好前后端,有前端内容,管理员登录可以进入后端对一些数据进行基本操作。其次是数据描述,管理员和普通用户的基本信息都是储存在数据库当中,可以通过计算机来对数据进行增删改查,辅助网页进行修改,对网页的内容进行管理。本数据的采集是通过一些考研网站进行参考。功能需求考研网站最基本就是要有考研的内容,管理员能查看所有用户的信息对用户信息进行操作。普通用户就是可以查看考研内容也可以分享自己的考研心得。最后运行要求,正常使用时不应出错,若运行时遇到不可恢复的系统错误,也必须保证数据完好无损,对数据的精确度、时间特性、适应性等都有一定要求,要求系统运行时能够保证正确性、可靠性、高效性、完整性、易使用性、可维护性、可测试性、复用性、安全保密性、可移植性、互联性[7]。3 总体设计在对系统进行可行性研究之后,就进入到了开发阶段,都有了大致方向就对系统进行开发。要用PHP开发网站,用框架开发比较方便,提供了一些主体功能。3.1 Laravel框架其中Laravel,Yii是比较在市场中常见的框架,Laravel是在市场中占用比较大的一种框架,使用laravel5.3版本开发。要用Laravel就先安装Composer,Composer可以安装一些软,直接百度搜索Composer进入官网安装。在命令行输入composer就可以查看是否安装好Composer。之后就可以安装Laravel,先建立一个文件夹,是用命理行进入这个文件夹输入composer create-project laravel/laravel ‘文件名‘ –prefer-dist “5.3.*”就会在文件夹中下载laravel5.3版本。在进入的文件夹输入php artisan –V就能查看Laravel是否下载成功以及版本。Laravel采用的是MVC模式,所谓的MVC就是模型,视图,控制器的缩写,一种软件设计的典范,模型是用于封装应用程序的业务逻辑的数据以及对数据处理的方法,是对数据直接的访问。视图是显示页面,和html网页差不多,控制器是应用程序中处理用户交互的部分,控制程序流程,对用户行为和数据的改变进行处理。Laravel下载好后,要通过地址栏访问,直接配置虚拟主机,访问自己设置的域名,就能看见Laravel的主页面,就说明安装成功。然后是对Laravel的目录了解。第一个app文件夹是应用的核心代码,第二个bootstrap文件夹是框架自动加载文件,第三个config文件夹是配置文件,第四个database文件夹是数据库迁移,第五个public文件夹是网站主入口和前端资源,第六个resources文件夹是界面文件,第七个routes文件夹是路由目录,第八个storage文件夹是临时文件,第九个test文件夹是自动化测试目录,第十个vendor文件夹是composer依赖包。还有一个.env文件,在里面设置连接数据库,下面就是连接数据库的内容。DB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=‘数据库名称‘DB_USERNAME=‘账号‘DB_PASSWORD=‘密码‘3.2 Mysql数据库设计数据库里面的表最基本有两级用户,一个普通用户和一个管理员。管理员可以对普通用户的密码进行修改,增加管理员用户[7]。可以修改考研流程,在考验攻略的内容进行删除修改增加的操作,可以修改考研流程表的内容。表3-1 管理员表字段名中文含义类型Id编号Int(自增)Name账号Varchar(10)pass密码Varchar(10)主键编号表3-2 用户表字段名中文含义类型Id编号Int(自增)Name账号Varchar(10)pass密码Varchar(10)Time注册日期Data主键编号表3-3 论坛表字段名中文含义类型Id编号Int(自增)Time发布时间datatimecontent内容Varchar(4000)Name发布人Varchar(10)Title标题Varcahr(10)status状态Int(1)主键编号表3-4 考研流程表字段名中文含义类型Id编号Int(自增)apply报考信息Varchar(2100)trys初试Varchar(2100)retest复试Varchar(2100)adjustment录取信息Varchar(2100)主键编号表3-5 考研攻略表字段名中文含义类型Id编号Int(自增)Class课程名称Varchar(10)introduce介绍Varchar(50)content内容Varchar(2000)主键编号图3-1就说明了数据库关系的说明,用户分为两级,普通用户和管理员。管理员可以对一些内容进行管理,就是对数据进行操作,修改管理员密码和用户密码,对考研流程进行修改,可以发布一些考研文章。普通用户可以在论坛发布内容,管理员要对内容进行审核。密码密码修改编号编号修改审核内容普通用户管理员发布修改论坛发布发布标题考研流程内容编号考研流程说明过程标题考研攻略图3-1 数据库关系图4 详细设计本网站的主要功能是实现对考研网站的管理。又分为两级用户的管理,每个用户都有自己的账号密码,账号不能修改,管理员可以修改密码,实现基本的增删改查。普通用户要先进行注册,才能进行登录,管理员可以删除普通用户,修改普通用户密码[8]。注册成功后,就可以进行登录,登录成功后就可以进入论坛,可以查看其他用户发表的文章,也可以自己发表文章。前端页面就主要有两个部分一个是考研流程内容和考研攻略,都是管理员可以在后台进行操作的内容。4.1 后台设计后台是管理员登录后能进行操作的页面,首先要设置后台页面,后台页面要先有一个页面,在Laravel中导入页面首先要在routes文件夹下的Web.php里面建立路由,因为第一个方法是要显示页面所以建立的路由是get,然后管理员用户的功能包含增删改查等功能,所以这个路由就要用资源路由resource,资源路由里面自己包含了get,post请求,方便使用各种功能。建立好路由下一步就要在app文件下的Http文件下的Controllers文件里面建立新的控制器文件,名字要和路由里面对应上,因为我建立的是资源路由这时候就可以通过命令行进入到项目,输入php artisan route:list。在没有报错的情况下就会出现路由对应的方法。前面在.env文件里面已经连接好数据库,在控制器文件里用use DB就可以导入数据库方法。首先要页面显示出来第一个对应的是index方法,在index方法里面使用‘一个变量’=DB::table(‘表名’)就可以通过这个变量获取表里面的数据,当然也可以使用SQL语句select * from‘表名’来给变量赋值。下一步要在resource文件下的views里面建立对应的后缀名为blade.php的视图页面,然后在index方法里面返回到视图页面,在视图页面中可以使用的语言和HTML一样,所以为了方便管理使用了表格来显示数据,在下一步可以在视图页面里面使用@foreach @endforeach来显示表中的数据。这样就可以基本实现调用数据库数据。然后因为数据可能会很多,不能把所有数据一次性展示出来,就要用到分页效果,在Laravel中分页很简单,直接使用paginate()方法添加到或得到数据后面,就能实现分页,括号中就是一个页面显示几条数据。然后在页面中使用方法就可以获取分页按钮,然后导入app.js就可以出现分页按钮的自带样式。还有为了方便管理,可以再增加一个count()方法这样就可以统计出总共有多少条数据。然后第一个方法是增加,设计的时候管理员没有注册要让存在的管理员进行手动增加。在路由列表里面所对应的方法为store。然后在视图页面里面增加添加管理员按钮,这时候要增加一个弹窗,通过点击之后就可以跳出增加窗口,这要在JS帮助下实现,这样也可以用AJAX实现无刷新增加,下一步就要导入JS,没有这个文件可以在JS官网下载。然后script标签里面书写js,给按钮增加一个点击事件add,在jquery里面简化里一个功能add,这样点击按钮就会触发这个功能。在这个功能里面要让增加窗口出现,首先要建立一个普通窗口,在他的css样式中把它隐藏display: none;,通过点击事件更换它的css样式为display="block";这样就会点击出现窗口,同理关闭按钮也是如此,增加一个点击事件再把它的css样式切换为隐藏。之后因为要获取添加窗口的所有信息所以要将信息给用form标签包括起来,因为form它自带一个anction属性里面的按钮会自动跳转,为了避免这个问题,就在form框里面增加onsubmit="return false;",让按钮不要自己提交。然后可以给form一个id属性,这样可以在add事件里面用serialize()方法将form里面的内容序列化,就是将内容变成字符串方便进行传递。这样就可以使用AJAX进行增加,然后内容是‘传递地址’,‘传递参数’,‘请求方式’,传递的地址可以在在路由表单里面查看,就会传递到控制器里面的store方法里面。然后可以在store里面定义Request来接受数据,之后可以将接受的数据用来进行表单验证,可以设置数据是否在自己的规定范围内,是否有重复等。验证通过后可以把数据储存进管理员表单,如果成功就返回一个数字1,不成功就返回0,这时候在页面上AJAX就接受返回到的数据进行判断,如果返回的数据是1就执行window.location.reload();自动刷新页面,就不需要手动刷新,反之如果没有执行成功就是没有返回1,则会提醒添加失败。下一个功能是删除,根据路由列表里面要在控制器里面建立destroy方法,然后在视图页面也是添加一个删除按钮,也给这个按钮添加一个点击事件delete,在Jquery中建立del功能,因为要确定删除到的管理员,所以在点击事件中增加了管理员带的id,在del功能中用一个obj来接收要删除的编号,这样就可以要判断要删除的数据,然后在del方法中用AJAX发送请求,把点击的数据的编号带到控制器中的destroy,然后用SQL语句进行删除或者也可以用查询构造器来进行删除。同理在执行成功后返回数据1,不成功返回0,这样在页面接收到1后就刷新页面,反之就会提醒删除失败。第三个功能是修改,一般而言都是修改管理员的密码,账号都是不可修改的,所以账号改为不可修改状态。和添加方法差不多,在路由列表里面使用update方法,因为修改窗口打开后要存在数据所以要根据打开的数据编号来出现数据,所以新建了一个store方法来获取打开修改窗口后的数据,因为打开修改按钮不仅需要打开修改窗口还需要获取修改数据,所以需要给修改按钮添加两个点击事件。第一个点击事件打开修改窗口也是修改修改窗口的css属性变成可见,关闭按钮反之改为隐藏。第二个点击事件就是先获取要修改数据的编号然后传递到edit方法,再根据传过来的编号从表中获取数据,然后返回到修改窗口,从而修改窗口就会获得要修改的数据。然后在修改窗口里面也添加一个提交按钮,增加一个点击事件保存save,同样的道理,将修改窗口增加form属性,添加onsubmit="return false;",不让按钮自动提交。因为账号不能修改所以增加disabled,让它不能修改。编号因为在修改要用到,但是不让它显示所以他的属性为hidden。在修改好后点击提交,也是用ajax发送请求,传递修改窗口的数据到控制器update方法,然后用表单验证保证修改的密码在范围内,之后使用update语句来修改密码。同样也是成功后返回数据1,不成功返回0。在成功后接收到数据1让页面自动刷新,失败了就提示失败。最后一个是查找搜索功能,根据路由列表要在控制器里面建立show方法。然后在页面建立好搜索框和搜索按钮,给搜索按钮添加点击事件,之后把搜索框添加一个id,这样就可以把在搜索框里的数据方便进行传递,然后通过AJAX请求传递到控制器里面的show方法,在show方法里面Request获取数据,之后用SQL语句或者查询构造器后直接添加条件获取到的数据用like和%包裹来实现模糊查询,之后把查询到的数据返回视图页面。这样管理员页面的增删改查功能就完成了。管理员页面完成后,要做登录和退出方法,登录页面就是很普通的页面,也是先在web.php文件中建立登录页面路由和登录操作路由,这样建立新的登录页面控制器和登录操作,主页面上的登录按钮跳转地址也就是路由地址,就直接跳转到登录页面,因为有两级用户所以登录页面添加一个级别管理员和普通用户,默认就是普通用户。点击提交按钮,就直接通过anction提交到登录处理操作,然后根据传过来的级别数据,是0就处理用户操作,1就处理管理员操作。之后通过request获取账号,因为登录只要获取一个数据所以要用first()方法来获取一行数据,之后判断输入的密码是否和表中的密码一样,一样就跳转到后台页面,不一样或者没用户就返回页面进行刷新。为了要登录才能进入后台和推出操作以及判断登录用户是谁,在登录过程中就要把管理员账号保存进session中,然后在页面上直接显示session中的账号,这样就能显示登录管理员账号。为了要登录才能进入,要在路由增加一个中间建,之后要在app下的Http下的Middleware创建一个同名的PHP文件,然后在Kernel.php里面在路由中间$routeMiddleware建里面添加说明。之后在Middleware下中间建文件里面进行判断seession中是否存在数据,存在数据才能进入页面,不然就返回登录页面。最后的退出操作也是,建立好退出路由后,在控制器里面建立退出方法,当在页面点击退出按钮后,提交到控制器的退出方法,清楚session中的信息,然后返回登录页面。这样后台管理员的登录退出就完成了。4.2 普通用户普通用户就是通过注册之后可以登录的用户,所以要先完成注册操作,在数据库中创建好user表后,注册按钮做好后,也是先做注册页面,重新建立一个get请求的路由,注册按钮的链接地址就是路由的地址,然后也是新建控制器,控制器建立好,在views里面新建视图页面,做好账号和密码的输入框。在Web.php里面做好post请求的处理注册和注册页面后,在控制器里面做与路有相对应的check方法,在注册页面用form标签包括起来,然后使用anction提交到check方法,之后使用Request接收数据,先对密码进行验证是否符合,然后判断账号是否被注册,然后判断两次输入的密码是否一致[8],如果有一条都不满足就会重新刷新页面,在之后如果都满足那就新建一个数组把账号密码和注册日期都写进数组,然后将数组的数据保存进user表里,然后就自动跳转到登录页面,前面已经做好登录页面,登录级别默认就是普通用户,之后也可以通过登录按钮来进入登录页面。然后在登录操作接收到了级别为普通用户,用first()方法获取账号数据,之后判断密码是否一致,一致后也是把账号存进seession里面,为了要确保登录后才能进入论坛也是要新建一个用户中间建,确保session存在信息,如果没有信息就返回登录页面,要确保登录才能进入论坛,退出功能功能也一样,做好路由和控制器后,点击退出就清除session信息返回主页面。然后用户的登录注册功能完成后,也是需要对用户数据进行。因为用户是要通过注册来增加人数,所以就没有了管理员增加功能,但是修改密码和查找,删除功能都在,所以也要新建一个资源路由来进行操作。然后也是新建一个用户的控制器,因为也是需要先引入数据库数据所以在路由中也要建立引入页面的路由,然后指定用户器中的index方法从用户表中获取用户数据。然后也包括分页和统计总数的方法。在后台有了两个页面,一个管理员数据一个普通用户数据,但是导航栏是共用的,这时候就可以用到Laravel中的模板继承,因此可以把导航栏写入一个文件中,然后使用extends来继承导航栏,这样以后多出来的页面也可以使用继承来共用导航栏。然后就是对用户数据的删除,修改,查找操作。因为有了对管理员的数据操作,所以都差不多。首先是对用户密码的修改,也是需要点击修改按钮后出现窗口和相对应的数据,所以也是要在控制器中建立相对应的方法,所以也是增加两个点击事件。然后将修改窗口内容使用form标签包括,将内容通过AJAX发送请求到控制器,传递编号,然后根据编号对传过来的密码进行修改,修改成功后对页面进行刷新,没成功就提示修改失败。删除功能也是一样,点击删除按钮后,触发点击事件,将数据编号通过AJAX请求传递数据到控制器,然后通过SQL语句将数据删除,之后也是刷新页面。最后的搜索功能也是搜索用户账号,建立好搜索框和搜索按钮。通过AJAX请求将搜索内容发送到控制器里的show方法,通过Request接收数据,然后将数据通过查询构造器用like实现模糊查询。这样对普通用户的管理也就完成了。4.3 前台页面设计后台基本设计好后,就要根据前台内容来改变功能,主页面就是一进到网页就能看到的,前台页面就和html内容差不多,为了区别使用了后缀名为.php的文件[8]。首先网站的都是导航栏,导航栏都是根据内容来规划有几个内容。然后最右边就是注册登录按钮,之前登录注册功能已经完成,将登录注册按钮的链接到登录注册页面,就完成了。因为导航栏是共用部分,所以这时候也使用了模板继承来完成。图4-1 导航栏界面图然后我自己根据网站经验,首先需要知道考研的时间,所以第一部分做了一个计时器,利用js里面的getTime属性做了一个考研计时器,告诉浏览的人们考研还有多长时间。图4-2 计时器界面图然后第二个部分是流程,因为考研流程的时间都是固定好的,不会发生改变,所以时间板块就写成了静态,不可以通过数据库修改,要修改的对其中的介绍因为,每年的考研内容都可能过去不一样。当写好静态内容后,在数据库新建考研流程表,这时候就可以在主页控制器里调用考研流程表的内容显示出来。因为内容也是需要管理员进行修改,所以在后台要新建考研流程管理页面,新建考研流程路由后,因为考研流程只需要页面和修改方法所以在控制器里面只需要两个方法,一个通过考研流程表来显示数据,一个用来修改数据。因为内容很多,单行输入框显示不了,所以用了textarea标签来显示数据,这样也就不需要在出现修改窗口,要修改内容直接在textarea标签内修改,然后就是新增一个提交按钮,用form将内容包括起来,也是通过AJAX发送请求,不然按钮自动提交。当控制器修改方法接收到数据后和以往方法不一样,因为前面方法只需要修改密码一条SQL就可以完成,这次需要一次修改1到4个数据,所以这次就多写了几条SQL语句,并且做了分支,这样可以无论是一次修改一条数据还是多条数据都可以。图4-3 考研流程界面图下一个板块是考研攻略板块,内容就是出现标题和介绍,点进去之后可以查看具体内容。因为每年的攻略都有所不同,可以增加修改删除,所以也需要数据库进行操作,所以也在数据库里新建考研攻略表,在控制器中将考研攻略表数据调用出来,调到考研攻略模块。然后也要通过后台操作,所以也要新建资源路由和控制器,在后台引入页面后,这次需要的方法是增删改查方法,所以也是根据路由列表在控制器中建立方法。在后台新建页面引入数据库数据后,使用paginate()和render()完成分页,使用count()完成统计数据。之后也是新建修改按钮,这时候就和前面一样将内容用form标签包括不让按钮自动提交,给按钮添加点击事情,也是需要两个点击事件,先打开修改窗口然后获得要修改的数据,修改要修改的数据完成后,点击提交,用AJAX发送请求到控制器,控制器修改方法接收到数据后,使用SQL语句进行判断,因为这里也是需要修改的地方是内容和介绍两个数据,所以也需要多条SQL语句进行操作,多写一个判断,这样可以让内容和介绍数据分开修改或者一起修改。之后就是删除功能和前面一样,在删除按钮的点击事件哪里点击后获取修改数据的编号,然后将编号通过AJAX请求发送到控制器的删除方法,根据传过来的编号进行数据删除。添加功能也差不多,点击添加按钮出现添加窗口,给要添加的攻略输入课程名,介绍和内容。也是通过AJAX请求发送到控制器的添加方法,将数据存入表中后将页面进行自动刷新,储存失败就提示失败,不刷新页面。最后的搜索功能也是依靠资源路由,在控制器中建立show方法,将在页面中的搜索框数据通过搜索按钮的点击事件,发送AJAX请求,在控制器中的show方法,接收数据后,通过查询构造器使用模糊查询将数据返回页面,这样足以好的搜索功能也完成了。然后在页面上只显示了攻略名称和介绍,要想看到具体内容,通过点击超链接可以看到具体内容,因为每个攻略的具体内容都不一样,所以这时候内容需要根据编号来改变。所以这时候在web.php中需要建立新的带参数路由,让连接通过js来改变地址,在点击超链接后会把地址改为路由地址带上编号传递到控制中,这次控制器会收到编号,然后根据编号进行查询,将内容返回到攻略具体内容的页面视图上。这样考研攻略就完成了。图4-4 考研攻略界面图图4-5 详细内容界面图下一部分就是友情链接,就是一些知名的外部链接,考研人经常会上的网站,直接使用普通超链接完成。这样前台页面也就完成了。图4-6 友情链接界面图4.4 论坛设计最后的就是用户登录后的论坛设计,因为都需要用户登录后才能进入,所以,也需要给路由增加一个用户中间建,用来判断用户是否登录,登录才能进入论坛。当用户进入论坛也是会把账号信息储存在session中,然后当点击退出就清除session信息。论坛就是用户可以发布一些自己的考研攻略,也可以查看其他用户发布的攻略,在数据库中创建好论坛表,攻略包括标题和内容,作者和发布时间。内容很多,也是需要点击链接进行查看。所以也是新建一个带参数路由将,点击之后将连接地址改为路由地址把编号传递过去,根据编号查找到内容。要想发布内容,用户就可以点击发帖按钮,然后就会弹出发布窗口让用户输入发布的标题和内容,用户输入完内容点击提交后,为了知道发布人,所以从seesion获取用户账号。因为要让管理员审核发布的内容,所以还增加了一个状态,默认值为1为禁用状态,,时间就是发布时间。将所有内容也是通过AJAX发送请求到控制器后,将内容储存到表中,因为有了状态,刚刚发布的内容虽然发布成功,但是状态为禁用不会显示,这时候为了让内容显示,所以要建立后台管理,新建一个后台论坛的资源路由对内容进行管理,新建论坛控制器后,也是用index方法在新建的论坛视图里面返回数据,这时候要对状态进行判断,如果数据为1就是禁用,0就是正常。然后也是有分页和统计功能,管理员对论坛的管理是审核,所以是要对状态进行修改。直接点击后就修改在正常和禁用中切换。在这个时候就要对状态进行增加点击事件,然后将数据传到事件中进行判断,同时为了分清数据也要把数据编号进行传递进行判断,如果状态为禁用那么把数据0传递过去,反之状态为正常那么把数据1传递过去,然后通过AJAX请求发送到控制器进修改,之后成功后就把状态进行切换,自动刷新页面。这样管理员就可以对论坛发布的内容进行审核。之后,在添加一个删除按钮,和前面方法一样给删除按钮添加点击事件,把要删除的数据编号通过AJAX请求发送到控制器,进行删除。还有方便管理,也建立搜索功能,增加搜索框和搜索按钮通过对搜索按钮的点击事件用AJAX请求把搜索框内容传递到控制器,从而返回要查找的数据。这样管理员对论坛的管理也完成了。5 测试报告所有的程序都做完后,要确保程序的可行性,在开发网站过程中,有着许多错误和复杂的问题,程序中有着许多自己相信不符合的地方。在开发过程中有着还是会存在不可避免的错误。为了避免这些错误还是在程序编写完成后自主创建数据进行了测试,尽可能的达到理想效果。每个程序所在的周期都会不可以避免的出现各种错误,但是虽然经过审查并不能所有错误,随着新的功能的产生还会出现新的错误。随着网站的不断运行错误将会不断地暴露,到那时不仅会影响用户们的体验,而且还要会费大量代价来修改错误。测试的作用就是在网站上线之前尽可能的发现错误并且改正。下面将一一介绍测试方案和测试结果[9]。5.1测试方案1.采用了黑盒测试,就是每个功能是否满足需求[10]。2.测试环境:Windows64系统,Apache2.4.41,PHP7.3.10,Mysql 8.0.17,谷歌浏览器。5.2测试过程前台测试:进入网站后页面显示是否正常,进行用户注册成功后,能否进行登录。然后是否可以进入论坛,对文章能否进行查看,是否可以发布文章;后端测试:在数据库中输入数据后,登录后端,对所有按钮进行测试查看数据是否发生变化。5.3测试结果经过一段时间的测试,普通用户的使用一切正常,管理员对数据操作也正常。致 谢由于时间和我个人水平有限,有些功能还很不完善,也没有达到想要的结果。主页面的一些板块还可以增加,论坛一些功能还可以增加,比如对用户发布文章的留言,像一个真的论坛那样。这次网站的设计在老师的帮助下完成,我初步结识了PHP这门编程语言,在学校学习的这几年,我掌握了一些基础理论知识,但是通过这次毕业设计暴露除了自己的很多缺点,自己的实践理论还不足,真正设计出来许多地方都无从下手,经过一段时间的学习,把自己学习的一些东西可以付之实践,对自己的知识理解有一定的知道作用。在这次设计中,对我来说很多东西没接触过,这就让我查阅了很多资料,从而培养了独立解决问题的的能力。这设计能够完成感谢老师给我的指导,无论在时间还是精神上给了很大帮助,也感谢学院给我们创造了良好的环境来完成设计。参考文献刘晓知.PHP在动态网站开发中的优势[J].电子制作, 2020-04-15蔡俊铠; 廖晓芳; 朱俊宇; 方栋豪.基于PHP+MySql的宿舍管理系统[J]. 长江大学,2020-12-25林慧.MySQL在PHP动态网页设计中的应用[J].电子技术与软件工程, 2021-03-15孙英;刘忠利. 基于PHP技术的动态网页设计方法[J].信息与电脑(理论版), 2020-07-25熊辉. PHP技术与MYSQL数据库技术的Web动态网页设计[J].信息记录材料, 2021-01-01杨登;王赛.基于PHP的校园招聘网站的分析与设计[J].信息与电脑(理论版), 2019-10-25王领.PHP在动态网站开发中的优势与具体应用分析[J].信息记录材料, 2019-03-01王永红.PHP技术在动态网站设计中的应用[J] .时代农机, 2018-12-28杨洋.PHP在动态网站开发中的优势[J]. 电子技术与软件工程, 2018-07-10张媛. 基于PHP与数据库技术的Web动态网站设计[J].自动化与仪器仪表, 2018-09-25指导教师简介赵璠,男,1983年生,博士,副教授,硕士研究生导师,主要从事计算机技术、电子信息技术、遥感信息技术在森林资源保护与利用方面的教学和科研工作。国家公派赴美访问学者。主持和参与国家科技支撑计划、国家公益性行业重大专项等多项国家级和省部级项目。获得国家林业和草原局梁希林业科学技术二等奖1项,云南省科学技术进步二等奖2项、三等奖1项。主编参编著作3部,发表第一作者和通讯作者论文30余篇,授权专利和软件著作权10余项。International Engineering and Technology Institute(IETI)高级会员,中国林学会森林防火委员会高级会员,财政部和云南省政府采购评审专家,云南省科技厅科技项目评审专家。《浙江农林大学学报》、《西南林业大学学报》、《广西林业科学》等核心期刊审稿人。近年取得的多项科研成果在林业系统推广应用取得较好效益。研制的“便携式火险测报及安全评估仪”被云南省科技厅列为2015年度“走一线、看科技”的创新成果宣传项目。主要承担《计算机网络》、《传感器原理与应用》、《无线传感器网络》、《无人机系统原理与应用》等本科和硕士课程的教学。