计算机网络系统实践报告要点_第1页
计算机网络系统实践报告要点_第2页
计算机网络系统实践报告要点_第3页
计算机网络系统实践报告要点_第4页
计算机网络系统实践报告要点_第5页
免费预览已结束,剩余52页可下载查看

下载本文档

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

文档简介

、必做部分局域网组网1)实验目的根据网线制作标准,使用五类双绞线制作直通线、交叉线,并了解各种网线的应用范围;网路设备的介绍;c)IP地址;d)IP地址寻址过程;WINDOWS下常用网络命令介绍。2)实验环境交换机、PC机、网线、水晶头、测试仪、RJ-45钳、WindowsXP操作系统,两个同学一组共同完成本实验,并进行实验验证。3)实验步骤步骤1将直通双绞线的一端接到交换机上,另一端接到 PC机上的网卡上,此时交换机对应的端口指示灯应边亮。步骤2IP地址的配置将PC机的IP地址修改为“3”,子网掩码修改为,默认网关修改为54。在“首选DNS服务器”框中填入“8”。步骤3计算机名的配置将计算机名设定为“ks54”,工作组设为“WEBSRV”步骤4ARP协议的测试进入MS-DOS方式在MS-DOS方式下执行如下命令arp-a(3)在MS-DOS方式下执行如下命令ping然后再用arp-a命令查看,显示结果大致如下~ ~ RUUDUH^Xfflt色・5站Cftd.U*••fl*MitFfriDftBUiAA*wEHr(5S.+■5-l-2CW3^IG氐枚庁1有1¥9S凋U丄HlcMSflfrMn?・|C~MSHfirmitj111hiuiiI^uLtinyx>ftdl<pidiilsilrrf.tu!L~>-dii,|j—j.IratnrfHru: .1fillIratnrfHru: .1fill.1A.£H 4*国*|1乍"艸即屯*甘血EE軒IKt^2t'Vt49%IKIL92mzWMJ14UUfl

⑷丄.n1.44丄U.2*^1Phy^1q«1ftdAr^p*kHFfli-脚-■•YA时JZZe-M-42-】内2?耐即辭2h伽tk2Jb49HUWfeMHU轉MTwiwd3fli»R>lcd艸皿1£b1vvi*<ii<■•rlv>kr«iiii11!d^TbARiClnvA丄1机jihiiiiiLhiuiiIRiiI.LiHHxMIil'ttjihiiiiiLhiuiiIRiiI.LiHHxMIil'ttihiimLruLni^>y>innwith32bytesof伽显:IC]||1UIIk;l«1曙呼it■會Ikp1 /IC]||1UIIk;l«1曙呼it■會Ikp1 /3*i|*liapl^FFWfl・d聊!c屮-mz1▼盟rl锚■:iEL■吉b晒说盜if!!rtM.1 ±h賈Lw-盘2h申応75:ImLm仲IlL-biTTL64TTL-生斗TTL・MPlnoriCnatlic!!亡昌£4f1^2.丄石#•丄■■丄巴FdbuflicEl-'KcibL4^Kcllc1UCldk1«旧心IS.pEl:LbLL聖JKisulhdlId1ipLkIM-lt irilhIi.lli"MkilidilJij:*RViiiiiiiniRi■Hiai:,.HriwiHira■*Aiuir 聊嶋-T_Lu>:j-tAk上H9&cun<ent;齡MidSettinjEMiAniniscrutaF>Birjj™4IrafcHirfHrTH上H9&cun<ent;齡MidSettinjEMiAniniscrutaF>Birjj™4IrafcHirfHrTH: 1t3・1%氐・{口1rit-?m«!r■盅止沪厅g$.19*21^2A42.^1-—AxflFh冥如也L■占dhpEG升Ic-fa-SiH-c*-dWZB dynmlG讐t-FAg鼻-辟-剽 d^wlc亡11三9卍q皿q邑hTtlFiL Jw^ili:Sk-flUi vlyvirijnii:AHARiMMM佻口 inuAlM结果中的MAC地址为主机的地址,在ipconfig/all命令可以验证,显示结果如下主机上用步骤步骤5在“网上邻居”里查看其它的计算机查看工作组就能看到在同一工作组里的其他计算机。Q4ZML-IS41*时MkU*(■flUUF鼻E区亶ttr»aB.-®F驟r.dkr1»L~.・k>□Q4ZML-IS41*时MkU*(■flUUF鼻E区亶ttr»aB.-®F驟r.dkr1»L~.・k>□W?T.tjfji-wwfrIihrrr评•(■里誣X严@1H-X*9*a共、享a共、享更f Ah<J:i££、*.«■>.■工fl朗 F・曲HWfEfx■■严a”i4.I',-.i至>HWfEfx■■严a”i4.I',-.i至>X勺篇亡冷TLj[FTKT口|*师—n二3I4GAnaa!*■IIiT口|*师—n二3I4GAnaa4)总结通过此次实验,通过亲自使用arp-a、ping和ipconfig/all指令,让我了解到这三个指令的功能及使用方法。通过这三个指令,对地址解析协议、 IP协议的工作过程有了切身的体会,加深了对计算机网络的理解。WWW服务器、FTP服务器的构建1) 实验目的WWW服务器的构建a) 了解WWW的基本概念;b) 了解B/S开发模式的概念c) 熟悉HTTP协议;d) 掌握常见的WWW服务器的构建方法。FTP服务器的构建a) 了解FTP的基本概念;b) 熟悉FTP协议;c) 掌握常见FTP服务器的构建方法。2) 实验环境在WindowsXP平台下,基于IIS或Apache构建WWW服务器,利用IE浏览器进行测试。在WindowsXP平台下,基于IIS或Serv-U构建FTP服务器,利用Windows自带的工作于命令方式的ftp程序进行测试。

3)实验步骤利用Apache构建WWW服务器步骤1安装步骤2配置http.Conf中常用的配置参数如下:(1) DocumentRoot该参数指定Apache服务器存放网页的路径。默认值为:“C://ProgramFiles/ApacheCroup/Apache2/htdocs”(2) Listen该参数指定Apache服务器用于监听客户端连接请求的IP地址和端口。标准http服务器默认端口号是80。(3) ServerName该参数是用户自行设置主机名,以取代安装 Apache服务器主机的真实名字(4) MaxKeepAliveRequests当使用保持连接功能时,可以用本参数决定每次连接所能发出的要求的上限(5) MaxRequestsPerChild该参数限制每个子进程在结束前所能处理的请求数目。步骤3测试启动浏览器并输入下列URL:http//localhost/或者出现下面页面,则表明Apache的安装、配置是成功的。■IqihB-taa-k'H旦宰"r-i+T|

■IqihB-taa-k'H旦宰"r-i+T|=V* Ml-jr•-窈_=V* Ml-jr•-窈_利用Serv-U构建FTP服务器步骤1安装按照屏幕上的提示操作执行安装过程步骤2配置设置用户名admin,密码admin,管理域2260,根目录D:\步骤3测试启动Windows的命令行方式,输入ftp命令,看到如下界面

4)总结通过此次实验,我学会了Apache和Serv-U服务器的安装与配置,通过亲自的安装,了解到了web服务器和ftp服务器的安装、配置与测试的方法,使我体会到了网络中服务层的作用,对我之后的安装配置自己的 Web的服务器有了很大的帮助。串口通讯1)实验目的a) 理解串口通讯和RS-232协议的原理;b) 掌握RS-232串口的基本连接方法;c) 在Windows环境下设计完成通过串口进行计算及通讯的程序设计;d) 掌握ActiveX控件MSComm在VC编程中的使用;e) 掌握CRC编码的原理及在串口通讯中的应用2)实验环境PC机(两台)、串口线、WindowsXP操作系统、VC++6.0软件。两个同学一组,其中一位做接收端,另一位做发送端。(接收端)3)实验步骤步骤1硬件连接在本实验中只要把母槽的串口连接线分别联结两台微机的九针串口公槽即可。步骤2创建接收端的主程序(1) 创建空的MFC工程打开VC环境,单击“文件”主菜单的“新建”菜单项,在“工程”标签中选择“MFCAppWizard”选项。(2) 添加MSComm控件选择”Project->AddToProject->->ComponetsandControls”,双击IDD_JIESHOU_DIALOG,修改ID为ID_COMMCTRL,再把ID改为IDC_CLEAR,标题改为清屏。(3) 设计窗体及相应变量和函数设置设计窗体如下二・13"|舄七|亠::]画|崗崭3»CWpHlTJicShQuDHii■\^Alda's-s 冷協曲1号二]玉F 划TillfTieHlunL 值工巾文¥口・ [1i11fJieSlwn. IW_nLL町口呵则1_1)1*5&少仙1处1】Fhw也世 up 亚谀itn ritJii■七阿wiuid1七evmiTJi请hu叭fJJ-CWill-sJiicShiJuDIu喑CSMIkJirSh«uDI^(CY/r>d*pPa沁DaDifaCx£:hiriy#[CDat«[2HdiiB鴛OnClnjifQ:i>伽饰mm[J?*OiirHiivlH加QiiQuL'ryDruNlluii|]荷OnSysCviriiiKiiUlUHMTnID.ILFdHi_Comni.hlsri*m将ID设置成IDC_RECEIVE,在ClassName中选择类CjieShouDlg,先在ControlIDs中双击ID_COMMCTRL,再在ControlsIDs中双击IDC_RECEIVE,将此控件命名为m_Jieshou,类型为Cstring,在Messagesx下的文本框中双击BN_CLICKED,对应函数命名为OnClear,再在ObjectIDszhong选择ID_COMMCTRL,将MSComm控件的对应函数命名为OnComm。(4)在项目工作区中选择ClassView选项卡,单击打开CjieShouDlg类,在函数OnInitDialog()中完成MSCommkong控件的初始化。在函数CJieShoulDlg::OnInitDialog()末尾添加如下程序:BOOLCJieShoulDlg::OninitDialog(){SetIcon(m_hIcon,FALSE);m_Com.SetCommPort(1);m_Com.SetInBufferSize(1024);m_Com.SetOutBufferSize(512);if(!m_Com.GetPortOpen())m_Com.SetPortOpen(TRUE);m_Com.SetInputMode(1);m_Com.SetSettings("9600,n,8,1");m_Com.SetRThreshold(1);m_Com.SetInputLen(0);returnTRUE;}(5)接收字符编辑OnComm()函数voidCJieShouDlg::OnComm(){VARIANThuiying;char*string;char*qinchustring;intk,nEvent,i;nEvent=m_Com.GetCommEvent();if(nEvent==2){k=m_Com.GetInBufferCount();if(k>0){huiying=m_Com.GetInput();string=(char*)(unsignedchar*)huiying.parray->pvData;}i=0;qinchustring=string;while(i<k){i++;qinchustring++;}*qinchustring='\0';m_Jieshou=+(constchar*)string;UpdateData(FALSE);}//TODO:Addyourcontrolnotificationhandlercodehere}最后为“清屏”按钮的相应函数voidCJieShouDlg::OnClear(){//TODO:Addyourcontrolnotificationhandlercodeherem_Jieshou.Empty();UpdateData(FALSE);}完成接收端,截图如下:程序运行如下:4)总结通过此次实验,通过自己亲自编程设计程序,让我熟悉了串口通讯和RS-232协议的原理,掌握了RS-232串口的基本连接方法,使我对计算机网络有了更深的理解。、选做部分题目:基于Web的新闻发布系统设计要求分析已有的基于Web的新闻发布系统,进行需求分析和功能设计;在数据库中构建数据库、表或视图,熟悉数据库开发流程;根据新闻发布系统的功能,条理清晰地设计各页面和脚本,掌握动态网页的制作技术;在时间允许的情况下,适当考虑页面的美观;开发环境1)硬件条件因系统运行负荷不大,使用个人计算机分别作为服务器端和客户端即可。网络通讯设备,包括交换机、网线等系统平台采用Browser/Server体系结构,操作系统采用Windows。Web服务器使用ApacheHTTPServer。服务器脚本语言选用PHP。数据库使用MySQL。标记语言采用HTML5标准开发工具使用AdobeDreamweaverCS6进行网页的设计与编码。使用Notepad++完成脚本语言的编写。使用GoogleChromeDeveloperTools调试网站。运行需求客户端要求拥有一款现代浏览器,接入服务器端所在网络即可实现对本系统的访问。基本原理新闻发布系统新闻发布系统(NewsReleaseSystemorContentManagementSystem)又叫做内容管理系统,是一个基于新闻和内容管理的全站管理系统,新闻发布系统是基于B/S模式的WEBMIS系统,本系统可以将杂乱无章的信息(包括文字,图片和影音)经过组织,合理有序地呈现在大家面前。当今社会是一个信息化的社会,新闻作为信息的一部分有着信息量大,类别繁多,形式多样的特点,新闻发布系统的概念就此提出。新闻发布系统的提出使电视不再是唯一的新闻媒体,从此以后网络也充当了一个重要的新闻媒介的功能。与一般的信息系统相比较,新闻发布系统具有以下特征:是基于B/S模式下的Web信息系统,数据库逻辑相对简单,但数据量一般比较庞大;用户数量大,服务器压力大,是系统设计中必须考虑的问题之一,而一般的信息系统相对压力要少了很多;是一个开放式的系统,前台浏览无须验证。新闻发布系统的开发方式主要有以下几类:前台动态显示的新闻发布系统该类系统大约占60%的分额,其主要特点是前台采用编程语言动态读取数据库的内容,随时更新,该类系统设计简单,适合大多数中小企业建站需要,通用性不强,一般需要量身定做,不适合大型新闻站点,当用户过多时,编程语言动态读取数据库就势必消耗大量的服务器资源,造成系统运行缓慢,甚至崩溃,同时由于前台新闻是动态从数据库中读取,导致前端用户直接接触到数据库,很容易造成一些不安全的因素,例如:SQLInjection。前台静态显示的新闻发布系统该类系统大约占有30%多的市场分额,其主要特点为:前台新闻全部生成HTML静态文件,前台无须读取数据库,浏览器只需要直接下载HTML文件即可浏览新闻,浏览速度得到提高,同时也大大减轻了数据库服务器的压力,该系统后台设计复杂需要处理复杂的模板标签和个模板之间的逻辑,一般采用三层模式实现,该类系统灵活性大,可以通过模板自定义实现界面复杂的前台页面,一般不需要为某一个企业而定做,该系统具有良好的通用性,适合各类新闻站点,同时,系统把前端用户和数据库分割开来,系统的安全性得到大大的提高。基于文本的新闻发布系统该系统在市场上占有很少的一部分,主要是把前面的数据库换成了TXT格式的文本文件,该系统主要缺点是文本文件是无序的,管理起来非常麻烦,而且安全性不高,很容易造成数据冗余,因此,2013年还没有见到该类系统的商业版本,一般都作为个人用户使用。d)基于XML数据岛的新闻发布系统该系统是新闻发布系统的一个发展趋势,它用XML数据岛代替了数据库,XML是一个有序的数据文件,比数据库的读取速度更快,但操作起来没有数据库这么方便,但是由于开发技术难度大,该类系统市场很少见到。本系统采用比较常用,开发也比较简单的第一类。2)Web服务原理Web信息存储于被称为网页的文档中,网页是存储于被称为Web服务器的计算机上,读取网页的计算机称为Web客户端。Web客户端通过称为浏览器的程序来查看网页,主要的浏览器有InternetExplorer等。浏览器可通过一个请求来读取某个服务器上的一张网页,请求是一个包含页面地址的标准HTTP请求,页面地址类似这样:/page.htm所有的网页都含有其如何被显示的结构,浏览器通过阅读这些结构来显示页面,最常用的显示结构称为HTML标签。用于段落的HTML标签类似这样:<p>,在HTML中像这样定义一个段落:<p>ThisisaParagraph</p>通常,当浏览器请求某个HTML文件时,服务器会返回此文件,但是假如此文件含有服务器端的脚本,那么在此HTML文件作为纯HTML被返回浏览器之前,首先会执行HTML文件中的脚本。服务器脚本能动态地向web页面编辑、改变或添加任何的内容;对由HTML表单提交的用户请求或数据进行响应;访问数据或数据库,并向浏览器返回结果;为不同的用户定制页面;提高网页安全性,使您的网页代码不会通过浏览器被查看到。PHPPHP是一种创建动态交互性站点的强有力的服务器端脚本语言。PHP是免费的,并且使用广泛。对于像微软ASP这样的竞争者来说,PHP无疑是另一种高效率的选项。PHP独特的语法混合了C、JavaPerl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。具备代码高亮功能的常见文本编辑器因其轻巧灵活常被选作 PHP开发工具,例如:Notepad++、Editplus等等。本系统使用了Notepad++。MySQLMySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQLAB公司。MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。可以使用命令行工具管理MySQL数据库(命令mysql和mysqladmin),也可以从MySQL的网站下载图形管理工具MySQLAdministrator,MySQLQueryBrowser和MySQLWorkbench。phpMyAdmin是由php写成的MySQL资料库系统管理程程序,让管理者可用Web界面管理MySQL资料库。本系统就采用了phpMyAdmin创建数据库,完成新建表等功能。PHP与MySQL的连接在您能够访问并处理数据库中的数据之前,您必须创建到达数据库的连接。在PHP中,这个任务通过mysql_connect()函数完成。HTML及HTML5超文本标记语言,标准通用标记语言下的一个应用。“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。超文本标记语言的结构包括头部分(Head)、和主体部分(Body),其中头部(head提供关于网页的信息,主体(body)部分提供网页的具体内容。网页的本质就是超级文本标记语言,通过结合使用其他的Web技术(如:脚本语言、公共网关接口、组件等),可以创造出功能强大的网页。因而,超级文本标记语言是万维网(Web)编程的基础,也就是说万维网是建立在超文本基础之上的。超级文本标记语言之所以称为超文本标记语言,是因为文本中包含了所谓“超级链接”点。其主要特点如下:a) 简易性:超级文本标记语言版本升级采用超集方式,从而更加灵活方便。b) 可扩展性:超级文本标记语言的广泛应用带来了加强功能,增加标识符等要求,超级文本标记语言采取子类元素的方式,为系统扩展带来保证。c) 平台无关性:虽然个人计算机大行其道,但使用MAC等其他机器的大有人在,超级文本标记语言可以使用在广泛的平台上,这也是万维网(WWW)盛行的另一个原因。d) 通用性:另外,HTML是网络的通用语言,一种简单、通用的全置标记语言。它允许网页制作人建立文本与图片相结合的复杂页面,这些页面可以被网上任何其他人浏览到,无论使用的是什么类型的电脑或浏览器。HTML5是用于取代1999年所制定的HTML4.01和XHTML1.0标准的HTML(标准通用标记语言下的一个应用)标准版本;现在仍处于发展阶段,但大部分浏览器已经支持某些HTML5技术。HTML5有两大特点:首先,强化了Web网页的表现性能。其次,追加了本地数据库等Web应用的功能。广义论及HTML5时,实际指的是包括HTML、CSS和JavaScript在内的一套技术组合。它希望能够减少浏览器对于需要插件的丰富性网络应用服务(plug-in-basedrichinternetapplication,RIA),如AdobeFlash、MicrosoftSilverlight,与OracleJavaFX的需求,并且提供更多能有效增强网络应用的标准集。功能模块1)网站功能模块网站分为前后台,分别供普通用户浏览新闻、管理员管理新闻使用。一、前台新闻显示根据网站的需要,在主页设置显示栏目导航,显示各个栏目的最新5条新闻等。在每个栏目的新闻列表页中依发布时间从后到前排列,且进行分页。每页显示20条新闻。通过点击页面数字切换到其它页。新闻页,用于显示具体的新闻,并提供评论功能,用户可匿名发表评论。同时评论功能可通过后台管理来关闭。二、后台管理新闻的添加:输入新闻标题,输入文章来源,选择需要的栏目。添加新闻文章,支持一定的文本格式设置,如加粗、居中、列表等,支持HTML源代码显示,支持图片上传和管理。发布时将记录发布时间

新闻的编辑:修改已发布的文章,将记录最终修改时间新闻的删除:删除已经发布的,但现在不想显示的文章新闻的评论关闭:关闭当前文章的评论功能。2)数据库逻辑结构a)用户信息表we_users#字段名称数据类型说明1IDbigint(20):用户编号,自增—2userloginvarchar(60)用户名3userpassvarchar(64)用户密码,MD5方式加密41usernicenamevarchar(50)用户昵称5useremailvarchar(100)用户注册邮箱地址6userregistereddatetime用户注册时间 n7userstatusint(11)用户分组ID#名字类型 整理 属性 空默认 额外□11Dbigint(2D) UNSIGNED舌无 ALFTOjNCREMEr^T□2user^login\archart60)utfB_genefal_ci□3user_pass\archar{64)Litf8_genefal_ci 舌□4userjnicename■archar(5D)utf8_general_ci□SusEr_email\archart100)Litf8_genefal_ci 吾□6usereregistereddatetime 舌OODO-OD-CX)OOzOOW1user^statusint<11)b)状态表we_status

#字段名称数据类型说明1statusidsmallint(2)状态编号2statusnamevarchar(10)状态名称statusidstatusname1已发布2未发布3已删除8评论开放9评论关闭#名字类規 整理 属性空默认锁外厂11statusidsmailing2) 否£|2siatusnamevarchar(10)utf3generalci 否无c)栏目表we_termsd)评论表d)评论表we_comments#字段名称数据类型说明1cmidbigint(20)评论编号,自增12postidbigint(20)评论所在文早的ID:3cmcontenttext评论内容#字段名称数据类型说明1termidbigint(20)栏目编号,自增2namevarchar(200)栏目名称3parentbigint(20)父栏目IDterm」dnameparent0首页10:1资讯02公告03服务:0:4头条新闻1这里的部分栏目父栏目为0,意思是栏目直接位于首页下。而这里的头条新闻是资讯的子栏目。#客字 搂型 整理属性空默认敵外Fl1termidbiqint(20)UNSIGNED書tALTO_fNCREMENT2namevarchar(200)utf8qeneral_ci不□3parentbigint(20) UNSIGNED舌0

4cmdate datetime 评论时间#名字类型 蔓理 层性 空默认斬外n1cmid biaint(201 UNSIGNED古耒AUTOINCREMENT□2postjdbigint(20) 舌■无3cmcontenttext utiBgeneralci 柠~~|4cmdatedatetime 舌无e)新闻内容表weposts#名字类型说明1IDbigint(20)新闻编号,自增2postauthorvarchar(16)新闻发布者用户ID3postsourcevarchar(60)新闻来源4postdatedatetime新闻发布日期时间5postcontentIongtext新闻内容6posttitletext新闻标题7poststatusint(2)新闻状态ID,可为westatus中的1,2,38commentstatusint(2)新闻评论状态ID,可为westatus中的8,99postmodifieddatetime新闻最后修改时间10menuorderint(11)新闻栏目ID#名字类型 整理 属性 空默认 额外□1iobigint(2O) UNSIGNED否无 AUIOJNCREMENT□ 2post_author^archar(16)utf&_general_ci 否.无□ 3postsource varchar(60)ut10_gene阳l_ci 否无□ 4post_dat&datetime 否 00:00:005postcontentlongtextutra_general_ci 否无□ 6postjitletext utf3_general_ci 否.无7poststatusint(2) 否1□Bcomment_statusint(2) 否a□ 9postmodifieddatetime 否0000-00-00OOzOOiOO□10menu_order否□服务器端设计PHPSessior变量当您运行一个应用程序时,您会打开它,做些更改,然后关闭它。这很像一次会话。计算机清楚你是谁。它知道你何时启动应用程序,并在何时终止。但是在因特网上,存在一个问题:服务器不知道你是谁以及你做什么,这是由于HTTP地址不能维持状态。通过在服务器上存储用户信息以便随后使用,PHPsession解决了这个问题。Session的工作机制是:为每个访问者创建一个唯一的id(UID),并基于这个UID来存储变量。UID存储在cookie中,亦或通过URL进行传导。在本系统中,需要使用Session来存放用户ID等信息。当在后台页面点击登录后,结果数据库查询,确认用户名和密码正确后,便把用户ID存放在Session中。这样在后台每一个涉及管理权限的页面中,通过检查 Session中的内容,即可确认当前是否已经登录,且可获取到登录ID进行相关的SQL查询。若Session中没有存放用户ID,则跳转到登录页面。b) PHP$_GET变量$_GET变量是一个数组,内容是由 HTTPGET方法发送的变量名称和值。$_GET变量用于收集来自method="get"的表单中的值。从带有GET方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏) ,并且对发送的信息量也有限制(最多100个字符)。在本系统中,除去首页的每一个页面,都由GET或POST的方式获取到URL中的变量值后,再确定页面要发送什么内容给客户端。例如,要访问 ID=1的文章,它的URL为http://localhost/ch/article.php?id=1,含有id变量。通过获取id变量的值,加入到SQL查询中,再返回id=1的文章的有关信息。再如发布新闻的页面URL为http://localhost/admin/my.php?add=true即在my.php页面中提交值为true的add变量,便可返回涉及发布文章的页面。c) PHP$_POST变量与$_GET类似,$_POST变量是一个数组,内容是由 HTTPPOST方法发送的变量名称和值。$_POST变量用于收集来自method="post"的表单中的值。从带有POST方法的表单发送的信息,对任何人都是不可见的(不会显示在浏览器的地址栏),并且对发送信息的量也没有限制。在本系统中,登录的表单、发布新闻的表单、编辑新闻的表单,点击提交按钮后都是通过POST方式发送信息的。发送的信息亦或是需要加密的信息,亦或是发送的量比较大,不能使用GET。d) 页面关联通过PHPinclude和require语句,可将一个页面拆分成多个文件。通过require请求运行其它php文件中的脚本,返回特定信息,嵌入到当前文件中。例如,假设我们有一个在所有页面中使用的标准菜单文件:"menu.php":echo'<ahref="/default.php">Home</a><ahref="/tutorials.php">Tutorials</a><ahref="/references.php">References</a><ahref="/examples.php">Examples</a><ahref="/about.php">AboutUs</a><ahref="/contact.php">ContactUs</a>';网站中的所有页面均应引用该菜单文件。这是具体的做法:<html><body><divclass="leftmenu">v?phpinelude'menu.php';?>v/div><h1>Welcometomyhomepage.</h1>vp>Sometext.v/p>v/body></html>在本系统中,后台有一个主php文件,通过require其它php文件,嵌入其它php文件中的脚本运行内容,例如在主页面get到update=1,就会请求delete.php文件。具体的代码如下:if(isset($_GET['delete'])){$articlelD=$_GET['delete'];require('my/delete.php');}通过这样的方式,减少不同文件中的重复内容,实现低耦合,高聚合。关于服务器端文件的具体结构如下:/admin/myadd.phpadd_s.phpclose.phpdelete.phphome.phpupdate.phpupdate_s.phplogin.php(后台登录页面)login_s.php(登录提交脚本)logout.php(注销脚本)my.php(通过require/my文件夹下各文件,实现各功能模块)/charticle.php(新闻正文页)cm_s.php(评论提交脚本)index.php(首页)list.php(新闻列表页)设计步骤1)服务器的安装安装集成有Apache,PHP,MySQL的XAMPPControlPanel,打开软件,启动Apache,MySQL的服务。在httpd.conf文件中修改DocumentRoot为存放页面的路径。XAMPPControlP^nelv3-1-03.1.0|[Compiled:Septembe『20th2012]XAMPPControlPanelv3.1.03,1.0ModkJlesServiceModlLilePIO(s}左阿3216ActionsStopAdminMfSQL17363306StopAdminFileZlla导tenAfoninMeiCuPyStBfl:Admin■Rwcal:StartConfigCorffigConfigConfigConfigXAMPPControlP^nelv3-1-03.1.0|[Compiled:Septembe『20th2012]XAMPPControlPanelv3.1.03,1.0ModkJlesServiceModlLilePIO(s}左阿3216ActionsStopAdminMfSQL17363306StopAdminFileZlla导tenAfoninMeiCuPyStBfl:Admin■Rwcal:StartConfigCorffigConfigConfigConfig20124:3720:24i2S20:34:3420:24:3320-24:3920典20202020202024:4024:4024:4024:402m24;4025:0525:05[Apache][mysg|][Apacho][Apache][Apnrhr][Apache][Apache][Apache][Apinchr][Apuch?][Apache][Apache]AttempiingI©ingtcStatuschangeAttemptin^toStatus亡h也:ngfStatyRchninig^Error;ApachestartApacheupp...start-MySOI.«pp,B,■detectcd:runningstartApachoapp.□bdete^Led:runningde-te-ctrdJ^1.nppedshutdarnuracxpcctedly・ThisHayb<?dueto日blockedport,nibsiukdepcndcncieBPinproperprivi acra^h,.or且shuLdovnbyanatherMthcHi.the*/Aanpp/JtpMEhe-/1 rfofelag- 11andtheWindowsEventVie<erf^rmareAttemptinstostartApache吐口甘,■>・StatusehanR#dete-cted:running2)数据库的实现点击MySQL的Admin按钮,进入phpMyAdmin,进行数据库结构的实现创建数据库:CREATEDATABASEwecmsSETutf8COLLATEutf8generalci;表的结构weusersCREATETABLEwe_users('ID'bigint(20)unsignedNOTNULLAUTO_INCREMENT,'user_login'varchar(60)NOTNULL,'user_pass'varchar(64)NOTNULL,'user_nicename'varchar(50)NOTNULL,'user_email'varchar(100)NOTNULL,'user_registered' datetimeNOTNULLDEFAULT'0000-00-0000:00:00','user_status'int(11)NOTNULLDEFAULT'0',PRIMARYKEY('ID'));--表的结构'we_status'CREATETABLE'we_status'('status_id'smallint(2)NOTNULL,'status_name'varchar(10)NOTNULL,PRIMARYKEY('status_id'));--表中的数据'we_status'INSERTINTO'we_status'('status_id','status_name')VALUES(1,'已发布'),(2,'未发布'),(3,'已删除'),(8,'评论开放'),(9,'评论关闭');--表的结构、we_terms'CREATETABLE'we_terms'('term_id'bigint(20)unsignedNOTNULLAUTO_INCREMENT,'name'varchar(200)NOTNULL,'parent'bigint(20)unsignedNOTNULLDEFAULT'0',PRIMARYKEY('term」d'),);--表中的数据'we_terms'INSERTINTO'we_terms'('term」d','name','parent')VALUES(0,'首页',0),(1,'资讯',0),(2,'公告',0),(3,'服务',0),(4,'头条新闻',1);CREATETABLEIFNOTEXISTS、we_comments'('cm_id'bigint(20)unsignedNOTNULLAUTO_INCREMENT,'post_id'bigint(20)NOTNULL,'cmcontent'textNOTNULL,

'cm_date'datetimeNOTNULL,PRIMARYKEY('cm」d'));编辑表间的主-外键关系后,实现如下图所示关系wecommentsjcm_jdibigint(2O)unsignedttpostid:wecommentsjcm_jdibigint(2O)unsignedttpostid:bigint^20).■ID:biglnt(20}unsignedpostauthorzvarcharf116)团pwe_users'&ID:t)iginL(2O)unsigned=userlogin:vanchar(60)cm_content:textcm_content:textpost^source:varctiar(60}user_pass.varcbwr(64)7crn_dale:datelirne3 •■•'fj-.we_terms■i7crn_dale:datelirne3 •■•'fj-.we_terms■itsnpjd.:blgint(2O]unsignedjnanne;varchar(200)箱parent:bigint.(201unsigned3posldale:datetimepost_cantent:longtextposl^liUe:texlHpoststatus:int(2}usernicenarne:varchar(BO)wuser^email:varchar(ioo)tuser_registeredidatelrne#user_statu&:int(11)hcomment_statusint{2)7]pO5lmodified:datetimenmcnu^ordor'int[11\westatus.!statusid:srn3llint(2;status_naii)e:varchar(W)完成数据库表的设计和基本信息的插入后,设置数据库与网页的连接。连接文件如下。其中第一句session_start(用于向客户端加入Seesion变量。conn,phpv?phpsession_start();$db_host='localhost';$db_username='root';$db_password='root';$db_database='wecms';$db=mysql_connect($db_host,$db_username,$db_password,$db_database);mysql_select_db('wecms');mysql_query("setnamesutf8");if(mysqli_connect_errno()){echo" 连接数据库失败!";exit;}return$db;?>之后的每一个涉及到数据库查询、插入、编辑的页面,均需先 require本页面。3)SQL查询的设计获取某个目录下最新的5篇文章ID与标题,用于首页的标题显示和新闻正文页的超链接(显示新闻正文需要使用 get方法提交新闻ID)。因为发布的新闻post_status应为1,故在where中添加该条件,可过滤已经被删除或还未发布的新闻。SELECTID,post_titleFROMwe_postsWHEREmenu_order=1ANDpoststatus=1ORDERBYIDDESCLIMIT0,5 b)_获取某个目录的名称。用于在新闻列表显示当前目录的名称SELECTnameFROMwetermsWHEREterm」d=$menulDc)获取某个目录的新闻条数。用于在新闻列表计算需要多少页来显示新闻。同样,设置post_status=1的条件。selectcount(*)fromwe_postsWHEREmenu_order=$menulD ANDpoststatus=1d)根据页码数显示一定范围内某个目录的新闻标题、 ID,用于新闻列表显示新闻和链接。其中的$offset,$pagesize是php变量,由当前页码数和每页需要显示的标题数决定,计算规则详见前台页面设计部分。SELECTID,post_titleFROMwe_postsWHEREnenu_order=$menulDANDpoststatus=1ORDERBYIDDESClimit$offset,$pagesizee)获取某个新闻的标题、内容、发布时间等信息。其中,post_date在SQL查询过程中进行了格式化。SELECTpost_status, post_title , post_source,DATE_FORMAT(post_date,'%Y-%m-%d%H:%i' )d,post_content,menu_order, nameFROMwe_posts,we_termsWHEREID=$IDANDtermid=menuorderf)判断是否允许评论。如果允许评论,则继续查询,返回新闻对应的评论内容,并显示评论发布框。(详见前台页面设计部分)SELECT*FROMwepostsWHEREID=$IDANDcommentstatus=8按时间倒序显示某个新闻对应的评论。SELECTcm_content,DATE_FORMAT(cm_date,'%Y-%m-%d%H:%i')dFROMwe_comments,we_postsWHEREpost_id=$IDANDpost_id=IDANDcommentstatus=8ORDERBYcm」dDESCh)向数据库插入新的评论。其中now()函数表示当前时间戳INSERTINTOwe_comments (post_id,cm_contentVALUES($id,'$cm',NOW()),cm_date )i)查询用户名密码是否正确,用于后台登录提交。SELECTIDFROMwe_usersWHEREuser_login='$usn'anduser_pass='$psw'limit0,1j) 显示可用目录的ID和文件名,用于新闻发布和新闻编辑时,目录选择表单的显示和值的设置。SELECTterm」d, nameFROMwe_termsWHEREterm」d<>0 ORDERBYterm」dk) 向数据库中插入新的新闻。INSERTINTOwe_posts(post_title,post_source,menu_order,post_content,post_author,post_date)VALUES('$title','$source',$menu,'$content',$userid,NOW())向数据库中更新已有的新闻内容。 将用当前时间戳更新post_modified最后更新时间。UPDATEwe_postsSETpost_title='$title',post_source='$source',menu_order=$menu,postcontent='$content',postmodified=NOW()WHEREID=$articlelDm) 删除文章。不是简单的从数据库中删除文章,因为该操作不可撤销。将post_status设置成已删除的状态即可。UPDATEwe_postsSETpost_status=3WHEREID=$articleIDandpoststatus=1n)恢复文章、关闭评论、开启评论与删除文章方法类似,此处代码略,可见后台页面设计部分源代码。4)前台页面的设计与实现a)首页ch/index.php该页面中,通过3次SQL查询,分别显示3个目录下的最新5条新闻。每个新闻都设置了超链接,通过get提交文章ID,跳转到article.php中。为目录也设置了超链接,通过get提交目录ID,跳转到list.php中,显示目录下的文章列<!doctypehtml><html><head><metacharset="utf-8"><title>首页</title><linktype="text/css"rel="stylesheet"href="../css/reset.css"><linktype="text/css"rel="stylesheet"href="../css/index.css"></head><body><header><divid="menubar"class="clearfix">vdivclass="wrap"><ulid="menu"class="inline-style"><li><ahref="#">首页</a>v/li><li><ahref="list.php?menu=1"> 资讯 </a></li><li><ahref="list.php?menu=2"> 公告 </a></li><li><ahref="list.php?menu=3"> 服务 </a></li></ul></div></div></header><divid="indexContent"class="clearfixwrap"><divid="info"class="section">更多<divclass="bar"><ahref="list.php?menu=1"title="资讯">更多<h2>资讯</h2><span>更多>></span>v/a>v/div><divclass="box"><ulclass="listhas-style"><?phprequire_once("../conn.php");$sql="SELECTID,post_titleFROMwe_postsWHEREmenu_order=1ANDpost_status=1ORDERBYIDDESCLIMIT0,5";$result=mysql_query($sql);while($row=mysql_fetch_array($result)){一一?><li><ahref="article.php?id=v?=$row['ID']?>"x?=$row['post_title']?></a></li><?php}?></ul></div></div><divid="post"><divclass="bar"><a href="list.php?menu=2"title="更多公告"><h2>公告</h2><span>更多>></span>v/a>v/div><divclass="box"><ulclass="listhas-style"><?php$sql="SELECTID,post_titleFROMwe_postsWHEREmenu_order=2ANDpost_status=1ORDERBYIDDESCLIMIT0,5";$result=mysqlquery($sql);while($row=mysql_fetch_array($result)){一一?x|i><ahref="article.php?id=v?=$row['ID']?>"x?=$row['post_title']?></a>v/li><?php}?></ul></div></div><divid="service"><divclass="bar"><ahref="list.php?menu=3"title=" 更多服务"><h2>服务</h2><span>更多>></span>v/a>v/div><divclass="box"><ulclass="listhas-style"><?php$sql="SELECTID,post_titleFROMwe_postsWHEREmenu_order=3ANDpost_status=1ORDERBYIDDESCLIMIT0,5";$result=mysql_query($sql);while($row=mysql_fetch_array($result)){一一?><li><ahref="article.php?id=v?=$row['ID']?>"x?=$row['post_title']?></a></li><?php}?></ul></div></div></div><footer><p>Copyright©1993-2014Wills.AllRightsReserved.</p></footer></body></html>ch/list.php页面一开始执行脚本,判断是否有通过 get提交menu变量,如果没有,设置menuID值缺省为1,否则按提交的变量设置。根据menuID变量的值,执行SQL查询。因为新闻的数量可能较多,需加入分页功能。分页功能的源代码中通过注释的方式进行了解释说明。通过判断是否有 get提交page变量,设置要显示第几页的新闻列表。v?phprequire,once("../conn.php");if(isset($_GET['menu'])){$menulD=$_GET['menu'];}else{$menuID=1;}$sql="SELECTnameFROMwe_termsWHEREterm」d=$menulD";$result=mysql_query($sql);$row=mysql_fetch_array($result);?><!doctypehtml><html><head><metacharset="utf-8"><title>v?=$row['name']?></title><linktype="text/css"rel="stylesheet"href="../css/reset.css"><linktype="text/css"rel="stylesheet"href="../css/index.css"></head><body><divid="path"class="wrap"><ahref="index.php"title=" 首页">首页</a>><ahref="#"title="v?=$row['name']?>"x?=$row['name']?x/a>v/div><divid="content"class="clearfixwrap"><divid="mainCon"><divclass="section"><divclass="box"style="margin-bottom:30px;"><?php//分页代码开始$pagesize=10;// 设置每页显示条数$rs=mysql_query("select count(*) fromwe_postsWHEREmenu_order=$menulDANDpost_status=1");//取得记录总数,计算总页数用$myrow=mysql_fetch_array($rs);$numrows=$myrow[0];// 计算总记录$pages=intval($numrows/$pagesize);if($numrows%$pagesize!=0)$pages++;// 设置页数if(isset($_GET['page'])){$page=intval($GET['page']);// 获取要显示的页码}else{$page=1;// 无参数传入,设为第一页}/*page过界检查*/$page=min($page,$pages);$page=max(1,$page);$offset=$pagesize*($1);〃 计算记录偏移量//分页代码结束$sql="SELECTID,post_titleFROMwe_postsWHEREmenu_order=$menulDANDpost_status=1ORDERBYIDDESClimit$offset,$pagesize";$result=mysql_query($sql);$num=mysql_num_rows($result);if($num>0){?><ulclass="listhas-style"><?phpwhile($row=mysql_fetch_array($result)){?><li><ahref="article.php?id=v?=$row['ID']?>">v?=$row['post_title']?></a></li><?php}?></ul><ulclass="page"><?phpif($page>2)echo"<li><ahref=?menu=".$menulD."&page=1> 首页</a></li>";if($page!=1)echo"<li><ahref=?menu=".$menulD."&page=".($1)."> 上一页</a></li>";if($page>2)echo"<li><ahref=?menu=".$menulD."&page=".($2).">".($2)."v/a>v/ii>";if($page>1)echo"<li><ahref=?menu=".$menulD."&page=".($1).">".($1)."</a></li>";echo"<li>".$page."v/li>";if($page<=$pages-1)echo"<li><ahref=?menu=".$menulD."&page=".($page+1).">".($page+1)."</a></li>";if($page<=$pages-2)echo"<li><ahref=?menu=".$menulD."&page=".($page+2).">".($page+2)."v/a>v/li>";if($page!=$pages)echo"<li><ahref=?menu=".$menulD."&page=".($page+1)."> 下一页</a></li>";if($page<=$pages-2)echo"<li><ahref=?menu=".$menulD."&page=".$pages."> 末页</a></li>";?></ul><?php}else{echo'暂无文章';}?></div></div></div><divstyle="clear:both"x/div></div></body></html>新闻内容页ch/article.php通过get提交的变量的判断,类似新闻列表页。新闻内容页需要注意的是避免已删除新闻的显示。因为一些新闻可能之前发表过,但后来因为一些原因删除,但因为使用get的方式提交变量而获取新闻内容。通过保存页面链接的方式,用户有可能在新闻删除后再次访问本页面。因此,需要先判断文章是否被删除。当查询到post_status不等于1时即表明新闻不应该被显示。可直接使用对话框提示后结束脚本执行。<?phprequire,once("../conn.php");if(isset($_GET['id'])){$ID=$_GET['id'];}else{$ID=1;}$_SESSION['id']=$ID;$sql="SELECTpost_status,post_title,post_source,DATE_FORMAT(post_date,'%Y-%m-%d%H:%i')d,post_content,menu_order,nameFROMwe_posts,we_termsWHEREID=$IDANDterm」d=menu_order";$result=mysql_query($sql);$row=mysql_fetch_array($result);if($row['post_status']!=1){_echo'<script>alert(" 该文章不存在或已删除");</script>';exit;}?><!doctypehtml><html><head><metacharset="utf-8"><title>v?=$row['post_title']?x/title><linktype="text/css"rel="stylesheet"href="../css/reset.css"><linktype="text/css"rel="stylesheet"href="../css/index.css"></head><body><divid="path"class="wrap"><ahref="index.php"title=" 首页">首页</a>><ahref="list.php?menu=<?=$row['menu_order']?>"title="资讯"><?=$row['name']?x/a>v/div><divid="content"class="clearfixwrap"><divid="mainCon"><divclass="section"><h2id="title"><?=$row['post_title']?x/h2><divid="articleTime"x?=$row['d']?>    <?=$row['post_source']?x/div><divid="article"x?=$row['post_content']?></div></div>v?php$sql="SELECT*FROMwe_postsWHERED=$IDANDcomment_status=8";$result=mysql_query($sql);$num=mysql_num_rows($result);if($num>0){?><divclass="section"style="padding-bottom:40px;width:430px;">vformaction="cm_s.php"method="post"><textareaname="cm"cols="50"rows="5"x/textarea><inputname=""type="submit"value="评论"></form><?php}$sql="SELECTcm_content,DATE_FORMAT(cm_date,'%Y-%m-%d%H:%i')dFROMwe_comments,we_postsWHEREpost_id=$IDANDpost_id=IDANDcomment_status=8ORDERBYcm」dDESC";$result=mysql_query($sql);$num=mysql_num_rows($result);if($num>0){while($row=mysql_fetch_array($result)){?><divclass="cm_p"xpx?=$row['cm_content']?></p><pstyle="float:right"x?=$row['d']?

温馨提示

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

评论

0/150

提交评论