2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩60頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  網(wǎng)絡(luò)留言板的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  【摘要】設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于B/S架構(gòu)的網(wǎng)絡(luò)留言板。該留言板系統(tǒng)采用PHP技術(shù)開(kāi)發(fā),利用數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的各種操作,從而實(shí)現(xiàn)了留言板的留言及管理功能。在設(shè)計(jì)過(guò)程中遵循軟件開(kāi)發(fā)流程,首先對(duì)系統(tǒng)功能作出需求分析,在此基礎(chǔ)上建立系統(tǒng)的應(yīng)用原型,然后進(jìn)行了留言板系統(tǒng)的功能設(shè)計(jì)與實(shí)現(xiàn),經(jīng)過(guò)測(cè)試階段的反復(fù)調(diào)試和驗(yàn)證不斷地修正和完善系統(tǒng)功能,最終達(dá)到符

2、合要求的可行系統(tǒng)。實(shí)現(xiàn)的具體功能包括用戶注冊(cè)、留言查看、留言簽寫(xiě)、留言搜索及后臺(tái)管理等,并根據(jù)不同功能模塊面向的用戶對(duì)權(quán)限進(jìn)行了合理劃分。</p><p>  【關(guān)鍵詞】留言板;PHP;數(shù)據(jù)庫(kù);MySQL</p><p>  Design and Implementation of Message Boards</p><p><b>  XXX</

3、b></p><p> ?。℅rade**, Class**, Major XXX,School of Mathematics and Computer Science,Shaanxi University of Technology,Hanzhong 723001,Shaanxi)</p><p><b>  Tutor:XX</b></p>&

4、lt;p>  Abstract: A internet message board based on B / S structure is designed and implemented. The message board system is developed with the PHP language, makes use of the database access technology for database ope

5、rations, in order to achieve the leaving words function and management function. Following the software development processes during the design process, first of all the requirement analysis is made for the system. Based

6、 on this the system application prototype is established, and then the</p><p>  Key words:Message boards; PHP; Database; MySQL</p><p><b>  目錄</b></p><p><b>  引言1&

7、lt;/b></p><p><b>  1 系統(tǒng)分析1</b></p><p>  1.1可行性分析1</p><p><b>  1.2需求分析1</b></p><p>  1.2.1系統(tǒng)設(shè)計(jì)目標(biāo)1</p><p>  1.2.2系統(tǒng)功能分析1</

8、p><p>  2 系統(tǒng)開(kāi)發(fā)工具及環(huán)境1</p><p>  2.1 MVC三層構(gòu)架1</p><p>  2.2開(kāi)發(fā)工具簡(jiǎn)介1</p><p>  2.2.1 PHP簡(jiǎn)介1</p><p>  2.2.2 Apache簡(jiǎn)介1</p><p>  2.2.3 MySQL數(shù)據(jù)庫(kù)簡(jiǎn)介1<

9、;/p><p><b>  2.3開(kāi)發(fā)模式1</b></p><p>  2.4系統(tǒng)開(kāi)發(fā)環(huán)境1</p><p>  3 系統(tǒng)概要設(shè)計(jì)1</p><p><b>  3.1模塊設(shè)計(jì)1</b></p><p>  3.2留言板系統(tǒng)流程1</p><p&g

10、t;<b>  4 數(shù)據(jù)庫(kù)設(shè)計(jì)1</b></p><p>  4.1數(shù)據(jù)庫(kù)需求分析1</p><p>  4.2數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)1</p><p>  4.3數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)1</p><p>  5 系統(tǒng)詳細(xì)設(shè)計(jì)1</p><p>  5.1數(shù)據(jù)庫(kù)的連接1</p>

11、<p><b>  5.2首頁(yè)設(shè)計(jì)1</b></p><p>  5.3用戶登錄模塊的實(shí)現(xiàn)1</p><p>  5.4首頁(yè)查看留言的實(shí)現(xiàn)1</p><p>  5.5留言搜索的實(shí)現(xiàn)1</p><p>  5.6用戶簽寫(xiě)留言實(shí)現(xiàn)1</p><p>  5.6.1敏感詞過(guò)濾1&

12、lt;/p><p>  5.6.2驗(yàn)證碼技術(shù)的實(shí)現(xiàn)1</p><p>  5.6.3簽寫(xiě)留言的入庫(kù)操作1</p><p>  5.7用戶注冊(cè)模塊的設(shè)計(jì)1</p><p><b>  5.8后臺(tái)設(shè)計(jì)1</b></p><p>  5.8.1后臺(tái)頁(yè)面設(shè)計(jì)1</p><p>

13、;  5.8.2敏感詞添加的實(shí)現(xiàn)1</p><p>  5.8.3留言管理的實(shí)現(xiàn)1</p><p>  6 系統(tǒng)功能測(cè)試1</p><p><b>  總結(jié)1</b></p><p><b>  致謝1</b></p><p><b>  參考文獻(xiàn)1&l

14、t;/b></p><p><b>  科技外文文獻(xiàn)1</b></p><p>  附錄A: 源程序代碼1</p><p>  附錄B: 系統(tǒng)使用說(shuō)明書(shū)1</p><p><b>  引言</b></p><p>  由于Internet技術(shù)持續(xù)而飛速的發(fā)展,給人

15、們各個(gè)方面帶來(lái)了巨大變化,尤其對(duì)傳統(tǒng)的交流方式提出了新的模式和要求,由此而誕生的網(wǎng)絡(luò)留言板系統(tǒng)在Internet應(yīng)用上的地位顯而易見(jiàn)。網(wǎng)絡(luò)留言板系統(tǒng)利用網(wǎng)絡(luò)一定的時(shí)效性和廣泛的傳播面,可以方便人與人之間的信息交流和互動(dòng)。它已成為現(xiàn)代網(wǎng)絡(luò)信息化建設(shè)中的重要組成部分,從而備受人們的重視。</p><p>  最初,留言只是用于發(fā)布公告系統(tǒng),討論問(wèn)題的在線交流平臺(tái);但現(xiàn)在的網(wǎng)絡(luò)留言板已經(jīng)不再是以一個(gè)留言板的形式獨(dú)立地呈

16、現(xiàn)給用戶留言,隨著網(wǎng)絡(luò)的普及,留言的功能越來(lái)越豐富,受到廣大網(wǎng)民的歡迎。留言板已被作為一種網(wǎng)站系統(tǒng)的留言功能模塊嵌入到一些需要留言功能的網(wǎng)站系統(tǒng)中,從而減少了網(wǎng)站留言功能模塊的開(kāi)發(fā),像企業(yè)、學(xué)校等單位可以利用網(wǎng)上的留言發(fā)布公告、通知等。因此留言板在未來(lái)的網(wǎng)站系統(tǒng)中是不可缺少的一部分。對(duì)于一般企業(yè)而言,網(wǎng)絡(luò)留言系統(tǒng)能夠通過(guò)網(wǎng)絡(luò)提供方便的日常信息管理和交互,同時(shí)只需要相對(duì)較低廉的建設(shè)和維護(hù)成本。另外,企業(yè)還可以通過(guò)網(wǎng)絡(luò)留言板,為客戶提供一個(gè)

17、跨地域的交流平臺(tái),以便及時(shí)了解和掌握客戶需求,加強(qiáng)企業(yè)與客戶之間的溝通,提高企業(yè)的市場(chǎng)競(jìng)爭(zhēng)力。</p><p>  借助于留言板可以方便和朋友的聯(lián)系,加強(qiáng)朋友之間的感情交流,可以方便的查閱各種資料,可以提高獲取信息的隨機(jī)性,促進(jìn)信息和技術(shù)的交流,還可以為用戶提供一個(gè)休閑的聚會(huì)空間,以此來(lái)增加網(wǎng)站的人氣,維持穩(wěn)定數(shù)目的訪問(wèn)群體。因此,本次開(kāi)發(fā)留言板系統(tǒng)旨在探索尋求一種以互聯(lián)網(wǎng)為基礎(chǔ)的開(kāi)放模式,更好的方便人們?nèi)粘P畔?/p>

18、的溝通。</p><p><b>  1 系統(tǒng)分析</b></p><p>  隨著互聯(lián)網(wǎng)的高速發(fā)展,越來(lái)越多的人們都在網(wǎng)上建立起了自己的留言板,很多留言板為我們的日常生活提供了很大的幫助,展示了強(qiáng)大的媒體優(yōu)勢(shì),留言板的作用越來(lái)越受到重視,已經(jīng)成為了大家信息溝通,技術(shù)交流不可或缺的工具。要開(kāi)發(fā)網(wǎng)絡(luò)留言板,首先應(yīng)掌握它的用戶需求,理清它的功能結(jié)構(gòu),然后才能夠有依有據(jù)的進(jìn)

19、行功能模塊的劃分,開(kāi)發(fā)環(huán)境的選擇,進(jìn)而進(jìn)行整個(gè)系統(tǒng)的代碼實(shí)現(xiàn)。</p><p><b>  1.1可行性分析</b></p><p>  網(wǎng)絡(luò)留言板可以為用戶和企業(yè)提供一個(gè)具有更好互動(dòng)性的交流平臺(tái),方便企業(yè)快速獲取來(lái)自不同層次用戶的反饋信息,并可以更有效地處理這些反饋信息,從而減少花費(fèi)到這方面的大量時(shí)間,提高經(jīng)濟(jì)管理效率。</p><p>  

20、網(wǎng)站開(kāi)發(fā)近年來(lái)呈現(xiàn)飛速發(fā)展,已形成現(xiàn)在的以asp,jsp,asp.net,php開(kāi)發(fā)語(yǔ)言和開(kāi)發(fā)平臺(tái),各個(gè)軟件公司相繼投入研發(fā)人員不斷的改進(jìn)產(chǎn)品,因此從技術(shù)上講已經(jīng)具有成熟的環(huán)境。因php簡(jiǎn)單易學(xué),開(kāi)發(fā)速度快的特點(diǎn)。為了盡快開(kāi)發(fā)出這個(gè)留言板,我選擇用php進(jìn)行開(kāi)發(fā)。</p><p><b>  1.2需求分析</b></p><p>  在網(wǎng)絡(luò)高速發(fā)展的今天,網(wǎng)絡(luò)留言板

21、給人們提供了良好的互動(dòng)溝通的平臺(tái)。使用網(wǎng)絡(luò)留言板的網(wǎng)民人數(shù)眾多,使得網(wǎng)絡(luò)留言板的留言內(nèi)容豐富多樣,人們可以通過(guò)網(wǎng)絡(luò)留言板討論工作、學(xué)習(xí)、生活和娛樂(lè),以及對(duì)留言內(nèi)容和對(duì)事物進(jìn)行評(píng)論,從而在網(wǎng)上建立一個(gè)任何人都可以參與的互動(dòng)天地,網(wǎng)絡(luò)留言板已成為當(dāng)今網(wǎng)絡(luò)最為多元化和平民化的互動(dòng)交流的空間和平臺(tái)。對(duì)于網(wǎng)民,只要有網(wǎng)絡(luò)留言板,就可以超越現(xiàn)實(shí)生活,擁有不同以往的全新網(wǎng)上生活。</p><p>  網(wǎng)絡(luò)留言板的形式相對(duì)簡(jiǎn)單,

22、大體上可分為留言和留言管理兩部分,它雖然簡(jiǎn)單無(wú)比,但卻逐漸成為一種新的網(wǎng)絡(luò)應(yīng)用模式,它一出現(xiàn)便獲得了很多人的支持和參與。網(wǎng)絡(luò)發(fā)展前景無(wú)限,及早與網(wǎng)絡(luò)結(jié)合,與信息時(shí)代同步,與高科技匯合,定會(huì)給社會(huì)各行各業(yè)的發(fā)展注入新鮮的活力。站在網(wǎng)絡(luò)時(shí)代的前夜,我們清晰地聽(tīng)到了網(wǎng)絡(luò)時(shí)代的宣言,誰(shuí)掌握了網(wǎng)絡(luò),誰(shuí)就掌握了未來(lái)。現(xiàn)對(duì)于互聯(lián)網(wǎng)日益增長(zhǎng)的用戶群來(lái)說(shuō),網(wǎng)絡(luò)留言板會(huì)有相當(dāng)大的需求。</p><p>  1.2.1系統(tǒng)設(shè)計(jì)目標(biāo)&l

23、t;/p><p>  網(wǎng)絡(luò)留言板的設(shè)計(jì)目標(biāo)實(shí)現(xiàn)以下功能:新用戶注冊(cè)功能、用戶登錄功能、登錄用戶發(fā)表留言功能、登錄用戶查看留言并給管理員留悄悄話的功能、管理員登錄功能、管理員回復(fù)留言功能、管理員刪除留言功能、管理員發(fā)布系統(tǒng)公告功能和管理員添加敏感詞的功能。</p><p>  1.2.2系統(tǒng)功能分析</p><p>  開(kāi)發(fā)一個(gè)留言板系統(tǒng),首先應(yīng)確定留言板的功能,最基本的

24、留言板需要實(shí)現(xiàn)的功能很簡(jiǎn)單,一般有用戶查看留言,發(fā)表留言;管理員查看留言,回復(fù)留言和刪除留言。屬于用戶的業(yè)務(wù)操作有檢索留言、查看留言和發(fā)表留言,留言管理者的業(yè)務(wù)操作相對(duì)用戶要多一項(xiàng),即管理留言,包括回復(fù)留言和刪除留言等操作。</p><p>  本系統(tǒng)將要實(shí)現(xiàn)的留言板是在最基本的留言板的功能的基礎(chǔ)上進(jìn)行擴(kuò)展,實(shí)現(xiàn)一個(gè)高級(jí)的網(wǎng)絡(luò)留言板。</p><p>  前臺(tái)功能需求:用戶登錄、用戶注冊(cè)、

25、留言查看、留言檢索、顯示系統(tǒng)公告和簽寫(xiě)留言等。其中,在留言查看模塊中要實(shí)現(xiàn)查看全部留言、分頁(yè)瀏覽留言及管理員回帖顯示等功能,在簽寫(xiě)留言模塊中要實(shí)現(xiàn)敏感詞過(guò)濾、給管理管理員悄悄話、支持圖像和表情以及支持驗(yàn)證碼等功能。</p><p>  后臺(tái)功能需求:管理員登錄、留言管理、公告發(fā)布與管理和敏感詞添加與管理。其中,留言管理要實(shí)現(xiàn)查看留言、回復(fù)留言、刪除留言及查找留言等功能。</p><p> 

26、 2 系統(tǒng)開(kāi)發(fā)工具及環(huán)境</p><p>  系統(tǒng)開(kāi)發(fā)環(huán)境的選擇對(duì)于系統(tǒng)的建立來(lái)說(shuō)至關(guān)重要,它將決定著系統(tǒng)開(kāi)發(fā)工作量的大小,系統(tǒng)性能特點(diǎn)以及系統(tǒng)今后維護(hù)工作的易難等。因此在開(kāi)發(fā)系統(tǒng)之前,根據(jù)對(duì)系統(tǒng)所采用的技術(shù)、實(shí)現(xiàn)功能的評(píng)估,在選擇開(kāi)發(fā)環(huán)境時(shí),主要考慮了一下幾個(gè)因素:擴(kuò)展性、總體成本、功能、是否容易開(kāi)發(fā)和管理,另外開(kāi)放性和互操作性也是需要考慮的一個(gè)重要方面,因?yàn)樵撓到y(tǒng)是運(yùn)行在Internet上的,用戶平臺(tái)的差異性

27、決定了與其他系統(tǒng)的互操作是不可避免的。</p><p>  2.1 MVC三層構(gòu)架</p><p>  MVC是Model-View-Controller的簡(jiǎn)寫(xiě),“Model”代表的是應(yīng)用的業(yè)務(wù)邏輯,“View”是應(yīng)用的表面,“Controller”是提供應(yīng)用的處理工程控制,通過(guò)這種設(shè)計(jì)模型把應(yīng)用邏輯,吃力過(guò)程和顯示邏輯分成不同的組件實(shí)現(xiàn)。這些組件可以進(jìn)行交互和重用。</p>

28、<p><b>  2.2開(kāi)發(fā)工具簡(jiǎn)介</b></p><p>  以簡(jiǎn)單、易用和免費(fèi)為出發(fā)點(diǎn),本系統(tǒng)將選用PHP作為開(kāi)發(fā)語(yǔ)言,選用Apache作為系統(tǒng)調(diào)試的Web服務(wù)器,數(shù)據(jù)庫(kù)選用MySQL。</p><p>  2.2.1 PHP簡(jiǎn)介</p><p>  PHP是服務(wù)器端的一種編程語(yǔ)言,是為了創(chuàng)建HTML內(nèi)容而設(shè)計(jì)的既簡(jiǎn)單游強(qiáng)大

29、的語(yǔ)言。PHP和其他的編程語(yǔ)言類似,使用變量存儲(chǔ)臨時(shí)數(shù)值,使用運(yùn)算符操作變量。PHP的真正價(jià)值在于它是一個(gè)應(yīng)用程序服務(wù)器。</p><p>  PHP起源于自由軟件,即開(kāi)放源代碼軟件,使用PHP進(jìn)行Web應(yīng)用程序的開(kāi)發(fā)具有以下語(yǔ)言優(yōu)勢(shì)。</p><p>  安全性高:PHP是開(kāi)源軟件,每個(gè)人都可以看到所有PHP的源代碼,程序代碼與Apache編譯在一起的范式也可以讓它具有靈活的安全設(shè)定,P

30、HP具有了公認(rèn)的安全性能。</p><p>  跨平臺(tái):PHP幾乎支持所有的操作系統(tǒng)平臺(tái)并且支持Apache、IIS等多種Web服務(wù)器,并以此廣為流行。</p><p>  支持廣泛的數(shù)據(jù)庫(kù):可操作多種主流與非主流的數(shù)據(jù)庫(kù),如MySQL、Access、SQL Server、Oracle、DB2等,其中PHP與MySQL是現(xiàn)在最佳的組合,它們的組合可以跨平臺(tái)運(yùn)行。</p>&l

31、t;p>  簡(jiǎn)單易學(xué):PHP嵌入在HTML語(yǔ)言中,以腳本語(yǔ)言為主,內(nèi)置豐富函數(shù),語(yǔ)法簡(jiǎn)單、書(shū)寫(xiě)容易、方便學(xué)習(xí)掌握。</p><p>  執(zhí)行速度快:占用系統(tǒng)資源少,代碼執(zhí)行速度快。</p><p>  模板化:實(shí)現(xiàn)程序邏輯與用戶界面分離。</p><p>  支持面向?qū)ο螅褐С置嫦驅(qū)ο蠛瓦^(guò)程的兩種風(fēng)格開(kāi)發(fā),并可向下兼容。</p><p>

32、;  開(kāi)發(fā)成本低:在流行的企業(yè)應(yīng)用LAMP平臺(tái)中,Linux、Apache、MySQL和PHP都是免費(fèi)軟件,這種開(kāi)源免費(fèi)的框架結(jié)構(gòu)可以為網(wǎng)站經(jīng)營(yíng)者節(jié)省很大一筆開(kāi)支。</p><p>  內(nèi)嵌Zend加速引擎,性能穩(wěn)定快速。</p><p>  應(yīng)用范圍廣:PHP技術(shù)在Web開(kāi)發(fā)的各個(gè)方面應(yīng)用的非常廣泛,世界上很多大公司都采用了PHP技術(shù)。</p><p>  2.2

33、.2 Apache簡(jiǎn)介</p><p>  Apache是世界使用排名第一的Web服務(wù)器軟件。它可以運(yùn)行在幾乎所有廣泛使用的計(jì)算機(jī)平臺(tái)上。Apache源于NCSAhttpd服務(wù)器,經(jīng)過(guò)多次修改,成為世界上最流行的Web服務(wù)器軟件之一。Apache的特點(diǎn)是簡(jiǎn)單、速度快、性能穩(wěn)定,并可做代理服務(wù)器來(lái)使用。Apache web服務(wù)器軟件擁有以下特性:</p><p>  支持最新的HTTP/1.

34、1通信協(xié)議;</p><p>  擁有簡(jiǎn)單而強(qiáng)有力的機(jī)遇文件的配置過(guò)程;</p><p><b>  支持通用網(wǎng)關(guān)接口;</b></p><p>  支持基于IP和基于域名的虛擬主機(jī);</p><p>  支持多種方式的HTTP認(rèn)證;</p><p>  集成Perl處理模塊;</p>

35、<p>  集成代理服務(wù)器模塊;</p><p>  支持實(shí)時(shí)監(jiān)視服務(wù)器狀態(tài)和定制服務(wù)器日志;</p><p>  支持服務(wù)器端包含指令(SSI);</p><p>  支持安全Socket層(SSL);</p><p>  提供用戶會(huì)話過(guò)程的跟蹤;</p><p>  2.2.3 MySQL數(shù)據(jù)庫(kù)簡(jiǎn)介&

36、lt;/p><p>  MySQL是一個(gè)真正的多用戶、多線程SQL數(shù)據(jù)庫(kù)服務(wù)器。SQL(結(jié)構(gòu)化查詢語(yǔ)言)是世界上最流行的和標(biāo)準(zhǔn)化的數(shù)據(jù)庫(kù)語(yǔ)言。MySQL是以一個(gè)客戶機(jī)/服務(wù)器結(jié)構(gòu)的實(shí)現(xiàn),它由一個(gè)服務(wù)器守護(hù)程序mysqld和很多不同的客戶程序和庫(kù)組成。</p><p>  SQL是一種標(biāo)準(zhǔn)化的語(yǔ)言,它使得存儲(chǔ)、更新和存取信息更容易。例如,你能用SQL語(yǔ)言為一個(gè)網(wǎng)站檢索產(chǎn)品信息及存儲(chǔ)顧客信息,同時(shí)

37、MySQL也足夠快和靈活以允許你存儲(chǔ)記錄文件和圖像。</p><p>  MySQL 主要目標(biāo)是快速、健壯和易用。最初是因?yàn)槲覀冃枰@樣一個(gè)SQL服務(wù)器,它能處理與任何可不昂貴硬件平臺(tái)上提供數(shù)據(jù)庫(kù)的廠家在一個(gè)數(shù)量級(jí)上的大型數(shù)據(jù)庫(kù),但速度更快,MySQL就開(kāi)發(fā)出來(lái)。自1996年以來(lái),我們一直都在使用MySQL,其環(huán)境有超過(guò) 40 個(gè)數(shù)據(jù)庫(kù),包含 10,000個(gè)表,其中500多個(gè)表超過(guò)7百萬(wàn)行,這大約有100 個(gè)吉字

38、節(jié)(GB)的關(guān)鍵應(yīng)用數(shù)據(jù)。</p><p>  MySQL建立的基礎(chǔ)是業(yè)已用在高要求的生產(chǎn)環(huán)境多年的一套實(shí)用例程。盡管MySQL仍在開(kāi)發(fā)中,但它已經(jīng)提供一個(gè)豐富和極其有用的功能集。</p><p>  MySQL 最早起始于 1979 年,開(kāi)始是 Michael “Monty” Widenius 為瑞典的 TcX 公司創(chuàng)建的 UNIREG 數(shù)據(jù)庫(kù)工具。1994 年,TcX 開(kāi)始尋找一個(gè)用來(lái)

39、開(kāi)發(fā) Web 應(yīng)用程序的 SQL 服務(wù)器。他們測(cè)試了一些商業(yè)服務(wù)器,但是發(fā)現(xiàn)所有服務(wù)器對(duì)于 TcX 的大型表來(lái)說(shuō)都太慢。他們也試了 mSQL,但它缺乏 TcX 需要的某些功能。因此,Monty 開(kāi)始開(kāi)發(fā)一種新的服務(wù)器。其編程接口明確地設(shè)計(jì)為類似 mSQL 的編程接口,因?yàn)?mSQL 可得到幾個(gè)免費(fèi)的工具,所以利用與 mSQL 類似的接口,可以將這些相同的工具用于MySQL 從而大大減少了開(kāi)發(fā)接口的工作。</p><p

40、>  1995 年,Detron HB公司的 David Axmark 努力爭(zhēng)取 TcX公司在因特網(wǎng)上發(fā)布 MySQL。David 還做了文檔資料方面的工作和使 MySQL 與 GNU 的配置實(shí)用程序一起建造的工作。MySQL 3.11.1 在 1996 年以用于 Linux 和 Solaris 系統(tǒng)的二進(jìn)制分發(fā)形式發(fā)布。今天,MySQL 正工作在許多平臺(tái)上,并且二進(jìn)制和源代碼的形式都可以得到。</p><p&

41、gt;  MySQL 并不是一個(gè)開(kāi)放源代碼的產(chǎn)品,因?yàn)樵谀承l件下使用它需要許可證。但是,MySQL 很愿意在開(kāi)放源代碼的團(tuán)體內(nèi)得以普及,因?yàn)椤罢J(rèn)證”這個(gè)術(shù)語(yǔ)并不是非常有約束力的(除非通過(guò)出售 MySQL 或出售需要它的服務(wù)來(lái)掙錢,否則,大體上說(shuō) MySQL 一般是免費(fèi)的)。</p><p>  MySQL 的普及并不限于開(kāi)放源代碼團(tuán)體內(nèi)。雖然它在個(gè)人計(jì)算機(jī)上運(yùn)行(確實(shí),MySQL 的開(kāi)發(fā)一般在不昂貴的 Linu

42、x 系統(tǒng)上進(jìn)行),但它是可移植的,并且運(yùn)行在商用操作系統(tǒng)(如 Solaris、Irix 和 Windows)和一直到企業(yè)服務(wù)器的各種硬件上。此外,它的性能也足以和任何其他系統(tǒng)相匹敵,而且它還可以處理具有數(shù)百萬(wàn)個(gè)記錄的大型數(shù)據(jù)庫(kù)。</p><p>  MySQL 的廣泛應(yīng)用前景在我們面前尚未完全展開(kāi),如運(yùn)行在功能強(qiáng)但不昂貴的硬件上的免費(fèi)可用操作系統(tǒng),將豐富的處理功能和能力提供給比以往更多的人,在比過(guò)去范圍更廣的系統(tǒng)

43、上運(yùn)行等等。信息處理的經(jīng)濟(jì)障礙的降低使強(qiáng)有力的數(shù)據(jù)庫(kù)解決方案到達(dá)了比過(guò)去任何時(shí)候更多的人和機(jī)構(gòu)的手中。例如,本人在運(yùn)行 LinuxPPC 的 G3 PowerBook 筆記本電腦上使用 MySQL 與 Perl、Apache 和 PHP,這允許本人在任何地方都可以進(jìn)行工作,總的成本只是 PowerBook 的成本。</p><p>  過(guò)去只能夢(mèng)想將高性能的 RDBMS 用于自己工作的機(jī)構(gòu),現(xiàn)在可以這樣做了,并且

44、開(kāi)銷很低。數(shù)據(jù)庫(kù)的利用在單一的層次上也在不斷地增加。過(guò)去從未想過(guò)要使用數(shù)據(jù)庫(kù)的人現(xiàn)在也開(kāi)始考慮一旦得到一個(gè)數(shù)據(jù)庫(kù),怎樣將其用于自己的各種目的,例如用來(lái)存儲(chǔ)和訪問(wèn)系統(tǒng)的研究結(jié)果,跟蹤和維護(hù)最喜愛(ài)的收藏物(蝴蝶、郵票、捧球明星卡等等),幫助管理新開(kāi)張的公司,或者提供個(gè)人 Web 站點(diǎn)的搜索能力。</p><p><b>  2.3開(kāi)發(fā)模式</b></p><p>  網(wǎng)站

45、建設(shè)目前主要有兩種基本的開(kāi)發(fā)模型:兩層模型、三層模型。B/S結(jié)構(gòu)是真正的三層結(jié)構(gòu),它以訪問(wèn)WEB數(shù)據(jù)庫(kù)為中心,HTTP為傳輸協(xié)議,客戶端通過(guò)瀏覽器(Browser)訪問(wèn)WEB服務(wù)器和與其相連的后臺(tái)數(shù)據(jù)庫(kù),我們稱之為B/S(Browser/Server)模式。其三級(jí)結(jié)構(gòu)組成如圖2.3所示:</p><p>  圖2.3 開(kāi)發(fā)模式圖</p><p>  圖中從左到右,分為三個(gè)層次:</p

46、><p>  第一層是客戶端即瀏覽器,主要完成客戶和后臺(tái)的交互及最終查詢結(jié)果的輸出功能。在客戶端向指定的Web服務(wù)器提出服務(wù)器請(qǐng)求,Web服務(wù)器用HTTP協(xié)議把所需文件資料傳給用戶,客戶端接受并顯示在WWW瀏覽器上;</p><p>  第二層Web服務(wù)器是功能層,完成客戶的應(yīng)用功能,即Web服務(wù)器接受客戶請(qǐng)求,并與后臺(tái)數(shù)據(jù)庫(kù)連接,進(jìn)行申請(qǐng)?zhí)幚?,然后將處理結(jié)果返回Web服務(wù)器,再傳至客戶端;&

47、lt;/p><p>  第三層數(shù)據(jù)庫(kù)服務(wù)器是數(shù)據(jù)層。數(shù)據(jù)庫(kù)服務(wù)器應(yīng)客戶請(qǐng)求獨(dú)立地進(jìn)行各種處理。</p><p>  與傳統(tǒng)的C/S模式相比,B/S結(jié)構(gòu)把處理功能全部移植到了服務(wù)器端,用戶的請(qǐng)求通過(guò)瀏覽器發(fā)出,無(wú)論是使用和數(shù)據(jù)庫(kù)維護(hù)上都比傳統(tǒng)模式更加經(jīng)濟(jì)方便。而且使維護(hù)任務(wù)層次化:管理員負(fù)責(zé)服務(wù)器硬件日常管理和維護(hù),系統(tǒng)維護(hù)人員負(fù)責(zé)后臺(tái)數(shù)據(jù)庫(kù)數(shù)據(jù)更新維護(hù)。</p><p>

48、;<b>  2.4系統(tǒng)開(kāi)發(fā)環(huán)境</b></p><p>  系統(tǒng)能夠順利開(kāi)發(fā)完成,好的開(kāi)發(fā)環(huán)境是必要的。該系統(tǒng)使用的開(kāi)發(fā)環(huán)境如下。</p><p><b>  服務(wù)器端</b></p><p>  操作系統(tǒng):Windows Server 2003。</p><p>  服務(wù)器:Apache 2.0

49、。</p><p>  PHP軟件:PHP 5.0。</p><p>  數(shù)據(jù)庫(kù):MySQL 5.0</p><p>  MySQL圖形化管理軟件:phpMySQLAdmin-2.9.0.2。</p><p><b>  瀏覽器:IE8.0</b></p><p><b>  客戶端&l

50、t;/b></p><p>  瀏覽器:推薦使用IE6.0及以上版本。</p><p><b>  3 系統(tǒng)概要設(shè)計(jì)</b></p><p><b>  3.1模塊設(shè)計(jì)</b></p><p>  經(jīng)過(guò)系統(tǒng)的功能分析可以明確的知道,網(wǎng)絡(luò)留言板的功能分為普通用戶的前臺(tái)功能和留言管理的后臺(tái)功能兩部

51、分,因此模塊也分為兩部分進(jìn)行設(shè)計(jì)。網(wǎng)絡(luò)留言板的模塊體系如圖3.1所示。</p><p>  網(wǎng)絡(luò)留言系統(tǒng)主要包括以下功能模塊:</p><p>  查看留言功能模塊:供用戶查看及瀏覽留言;</p><p>  簽寫(xiě)留言功能模塊:用戶簽寫(xiě)留言、過(guò)濾留言敏感詞、給管理員悄悄話;</p><p>  文章查看功能模塊:用戶可查看管理員發(fā)表的文章;&

52、lt;/p><p>  最新留言列表顯示功能模塊:用戶可以瀏覽最新的留言;</p><p>  用戶注冊(cè)功能模塊:供需要留言的用戶注冊(cè)賬號(hào);</p><p>  管理員登錄功能模塊:管理員登錄;</p><p>  留言管理功能模塊:管理留言、查找留言、回復(fù)留言、管理管理員私貼;</p><p>  公告功能模塊:公告的發(fā)

53、表、公告瀏覽、公告刪除;</p><p>  敏感詞管理功能模塊:添加敏感詞、讀取敏感詞。</p><p>  圖3.1 網(wǎng)絡(luò)留言板的模塊體系</p><p>  3.2留言板系統(tǒng)流程</p><p>  系統(tǒng)的各個(gè)功能模塊已確定,接下來(lái)要做的是分析清楚各個(gè)模塊之間的流程關(guān)系,將各個(gè)功能模塊串聯(lián)起來(lái),使得模塊之間有關(guān)聯(lián)的關(guān)系,這樣才能構(gòu)成一個(gè)

54、完整的系統(tǒng)。</p><p>  首先簽寫(xiě)留言信息,然后對(duì)留言內(nèi)容進(jìn)行敏感詞過(guò)濾,如果提交成功,則將留言信息顯示在前臺(tái)首頁(yè),最后由管理員對(duì)留言信息進(jìn)行綜合管理。管理員對(duì)留言進(jìn)行管理之前先要登錄,登錄成功后進(jìn)入后臺(tái)的留言管理頁(yè)面。留言板的系統(tǒng)流程如圖3.2所示。</p><p>  圖3.2 網(wǎng)絡(luò)留言板系統(tǒng)流程</p><p><b>  4 數(shù)據(jù)庫(kù)設(shè)計(jì)&l

55、t;/b></p><p>  4.1數(shù)據(jù)庫(kù)需求分析</p><p>  本系統(tǒng)的主要實(shí)體有:用戶信息實(shí)體、留言信息實(shí)體、留言回復(fù)信息實(shí)體、文章信息實(shí)體。各實(shí)體之間的關(guān)系E-R圖如圖4.1所示。</p><p>  圖4.1 網(wǎng)上留言系統(tǒng)E-R圖</p><p>  4.2數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)</p><p>  

56、數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)將所有實(shí)體和關(guān)系轉(zhuǎn)換成一個(gè)系列的關(guān)系模式,將圖4.1中數(shù)據(jù)庫(kù)E-R圖轉(zhuǎn)換成為關(guān)系模型。</p><p>  用戶:(用戶編號(hào),用戶名,昵稱,密碼)</p><p>  留言信息:(留言編號(hào),留言昵稱,留言主題,留言內(nèi)容,留言心情,留言時(shí)間,用戶頭像,回復(fù)標(biāo)記,私貼標(biāo)記)</p><p>  留言回復(fù)信息:(留言編號(hào),留言昵稱,留言主題,留言內(nèi)容,留言心

57、情)</p><p>  公告信息:(公告編號(hào),公告主題,心情,公告內(nèi)容,發(fā)布日期)</p><p>  4.3數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)</p><p>  根據(jù)數(shù)據(jù)項(xiàng),可以設(shè)計(jì)出滿足需求的各種實(shí)體,以及它們之間的關(guān)系。這樣本系統(tǒng)設(shè)計(jì)一下實(shí)體:用戶、留言、留言回復(fù)和公告。這幾種實(shí)體對(duì)應(yīng)數(shù)據(jù)庫(kù)中的4個(gè)表:tb_user、tb_note、tb_note_answer和tb_f

58、il,每個(gè)表與邏輯設(shè)計(jì)中一種關(guān)系模型對(duì)應(yīng)。下面是每個(gè)數(shù)據(jù)表中的屬性,包括屬性列的名稱,數(shù)據(jù)類型,長(zhǎng)度等內(nèi)容。</p><p>  經(jīng)過(guò)上面對(duì)系統(tǒng)功能的分析和需求總結(jié),設(shè)計(jì)出如下所示的數(shù)據(jù)項(xiàng):</p><p>  用戶,包括用戶編號(hào)、用戶名、昵稱和密碼。用戶信息及屬性如圖4.2所示。</p><p>  圖4.2 用戶實(shí)體屬性圖</p><p>

59、;  tb_user表:tb_user表用來(lái)存儲(chǔ)用戶的ID、用戶名、昵稱及密碼,如表4.1所示,主鍵是在一個(gè)表上定義的唯一鍵中的一個(gè),而且一個(gè)表上只能有一個(gè)主鍵。</p><p>  表4.1 用戶信息數(shù)據(jù)表</p><p>  留言,包括留言編號(hào)、留言昵稱、留言主題、留言內(nèi)容、留言心情、留言時(shí)間、用戶頭像、回復(fù)標(biāo)記和私貼標(biāo)記。留言信息及屬性如圖4.3所示。</p><

60、p>  圖4.3 留言實(shí)體屬性圖</p><p>  tb_note表:tb_note表用來(lái)存儲(chǔ)留言的留言編號(hào)、留言昵稱、留言主題、留言內(nèi)容、留言心情、留言時(shí)間、用戶頭像、回復(fù)標(biāo)記及私貼標(biāo)記,留言信息及屬性如表4.2所示。</p><p>  表4.2留言信息數(shù)據(jù)表</p><p>  回復(fù),包括留言編號(hào)、留言昵稱、留言主題、留言內(nèi)容和留言心情?;貜?fù)信息及屬性

61、如圖4.4所示。</p><p>  圖4.4 留言回復(fù)實(shí)體屬性圖</p><p>  tb_note_answer表:tb_note_answer表用來(lái)存儲(chǔ)留言編號(hào)、留言昵稱、留言主題、留言內(nèi)容和留言心情,回復(fù)信息及屬性如表4.3所示。</p><p>  表4.3 回復(fù)信息數(shù)據(jù)表</p><p>  公告,包括公告編號(hào)、公告主題、心情、公

62、告內(nèi)容和發(fā)布日期。公告信息及屬性如圖4.5所示。</p><p>  圖4.5 文章實(shí)體實(shí)體屬性圖</p><p>  tb_file表:tb_file表用來(lái)存儲(chǔ)系統(tǒng)公告的編號(hào)、公告主題、心情、公告內(nèi)容和發(fā)布日期,公告的信息及屬性如表4.4所示。</p><p>  表4.4 文章信息表</p><p><b>  5 系統(tǒng)詳細(xì)設(shè)計(jì)

63、</b></p><p><b>  5.1數(shù)據(jù)庫(kù)的連接</b></p><p>  為了便于維護(hù),減少代碼冗余,在數(shù)據(jù)庫(kù)連接這部分,采用面向?qū)ο蟮姆绞剑x了一個(gè)數(shù)據(jù)庫(kù)訪問(wèn)類DB_MySQL。定義數(shù)據(jù)庫(kù)訪問(wèn)類的代碼如下。</p><p><b>  <?php</b></p><p&

64、gt;  /********************************************</p><p><b>  *數(shù)據(jù)庫(kù)訪問(wèn)類</b></p><p>  *********************************************/</p><p>  class DB_MySQL{</p>&l

65、t;p>  //==========================</p><p>  var $Host = "127.0.0.1";//服務(wù)器地址</p><p>  var $Database = "db_leaveword";//數(shù)據(jù)庫(kù)名稱</p><p>  var $User = "ro

66、ot";//用戶名</p><p>  var $Password = "root";//用戶密碼</p><p>  //==========================</p><p>  var $Link_ID = 0;//數(shù)據(jù)庫(kù)連接</p><p>  var $Quer

67、y_ID = 0;//查詢結(jié)果</p><p>  var $Row_Result = array();//結(jié)果集組成的數(shù)組</p><p>  var $Field_Result = array();//結(jié)果集字段名組成的數(shù)組</p><p>  var $Affected_Rows;//影響的行數(shù)</p><p&

68、gt;  var $Rows;//結(jié)果集中記錄行數(shù)</p><p>  var $Fields;//結(jié)果集中字段個(gè)數(shù)</p><p>  var $Row_Position = 0;//記錄指針位置索引</p><p>  //*****************************************************

69、**</p><p>  /*** 構(gòu)造函數(shù) */</p><p>  function __construct(){</p><p>  $this->connect();</p><p><b>  }</b></p><p>  /*** 解析函數(shù) */</p><

70、p>  function __destruct(){</p><p>  mysql_close($this->Link_ID);</p><p><b>  }</b></p><p>  /*** 連接服務(wù)器,選擇數(shù)據(jù)庫(kù) */</p><p>  function connect($Database =

71、"",$Host = "",$User = "",$Password = ""){</p><p>  if ("" == $Database){</p><p>  $Database = $this->Database;</p><p><b> 

72、 }</b></p><p>  if ("" == $Host){</p><p>  $Host = $this->Host;</p><p><b>  }</b></p><p>  if ("" == $User){</p><

73、;p>  $User = $this->User;</p><p><b>  }</b></p><p>  if ("" == $Password){</p><p>  $Password = $this->Password;</p><p><b>  }&

74、lt;/b></p><p>  if ( 0 == $this->Link_ID )</p><p><b>  {</b></p><p>  $this->Link_ID=@mysql_pconnect($Host, $User, $Password);</p><p>  if (!$this-

75、>Link_ID)</p><p><b>  {</b></p><p>  $this->halt("連接數(shù)據(jù)庫(kù)服務(wù)端失敗!");</p><p><b>  }</b></p><p>  if (!mysql_select_db($this->Datab

76、ase,$this->Link_ID))</p><p><b>  {</b></p><p>  $this->halt("不能打開(kāi)指定的數(shù)據(jù)庫(kù):".$this->Database);</p><p><b>  }</b></p><p><b>

77、;  }</b></p><p>  return $this->Link_ID;</p><p><b>  }</b></p><p>  /*** 釋放內(nèi)存 */</p><p>  function free(){</p><p>  if ( @mysql_free_r

78、esult($this->Query_ID) )</p><p>  unset ($this->Row_Result);</p><p>  $this->Query_ID = 0;</p><p><b>  }</b></p><p>  /*** 執(zhí)行查詢 */</p><p

79、>  function query($Query_String){</p><p>  /* 釋放上次查詢占用的內(nèi)存 */</p><p>  if ($this->Query_ID){</p><p>  $this->free();</p><p><b>  }</b></p>&l

80、t;p>  if(0 == $this->Link_ID){</p><p>  $this->connect();</p><p><b>  }</b></p><p><b>  //設(shè)置中文字符集</b></p><p>  @mysql_query("set n

81、ames gb2312",$this->Link_ID);</p><p>  $this->Query_ID = @mysql_query($Query_String,$this->Link_ID);</p><p>  if (!$this->Query_ID){</p><p>  $this->halt("S

82、QL查詢語(yǔ)句出錯(cuò): ".$Query_String);</p><p><b>  }</b></p><p>  return $this->Query_ID;</p><p><b>  }</b></p><p>  /*** 返回結(jié)果集記錄組成的數(shù)組 */</p>

83、<p>  function get_rows_array(){</p><p>  $this->get_rows();</p><p>  for($i=0;$i<$this->Rows;$i++){</p><p>  if(!mysql_data_seek($this->Query_ID,$i)){</p>

84、<p>  $this->halt("mysql_data_seek查詢語(yǔ)句出錯(cuò)");//調(diào)用自定義函數(shù)</p><p><b>  }</b></p><p>  $this->Row_Result[$i] = mysql_fetch_array($this->Query_ID);</p><

85、p><b>  }</b></p><p>  return $this->Row_Result;</p><p><b>  }</b></p><p>  /*** 返回結(jié)果集字段組成的數(shù)組 */</p><p>  function get_fields_array(){</

86、p><p>  $this->get_fields();</p><p>  for($i=0;$i<$this->Fields;$i++){</p><p>  $obj = mysql_fetch_field($this->Query_ID,$i);</p><p>  $this->Field_Result[$

87、i] = $obj->name;</p><p><b>  }</b></p><p>  return $this->Field_Result;</p><p><b>  }</b></p><p>  /*** 返回結(jié)果集中記錄行數(shù) */</p><p>

88、  function get_rows(){</p><p>  $this->Rows = mysql_num_rows($this->Query_ID);</p><p>  return $this->Rows;</p><p><b>  }</b></p><p>  /*** 返回結(jié)果集中字

89、段個(gè)數(shù) */</p><p>  function get_fields(){</p><p>  $this->Fields = mysql_num_fields($this->Query_ID);</p><p>  return $this->Fields;</p><p><b>  }</b>

90、</p><p>  /*** 執(zhí)行SQL語(yǔ)句并返回由查詢結(jié)果中第一行記錄組成的數(shù)組 */</p><p>  function fetch_one_array($sql){</p><p>  $this->query($sql);</p><p>  return mysql_fetch_array($this->Query_

91、ID);</p><p><b>  }</b></p><p>  /*** 打印錯(cuò)誤信息 */</p><p>  function halt($msg){</p><p>  $this->Error=mysql_error();</p><p>  printf("<

92、BR><b>數(shù)據(jù)庫(kù)發(fā)生錯(cuò)誤:</b> %s<br>\n", $msg);</p><p>  printf("<b>MySQL 返回錯(cuò)誤信息:</b> %s <br>\n",$this->Error);</p><p><b>  }</b></p

93、><p><b>  }</b></p><p><b>  ?></b></p><p>  在這個(gè)類中,定義了一個(gè)connect()函數(shù)用來(lái)連接數(shù)據(jù)庫(kù)服務(wù)器并選擇數(shù)據(jù)庫(kù),函數(shù)query()的功能為執(zhí)行查詢數(shù)據(jù)庫(kù)。</p><p><b>  5.2首頁(yè)設(shè)計(jì)</b><

94、/p><p>  首頁(yè)是整個(gè)網(wǎng)絡(luò)留言板的入口地址,合理的首頁(yè)布局和模塊分配直接影響到用戶對(duì)留言板的第一印象。為了吸引更多的用戶瀏覽和使用網(wǎng)絡(luò)留言板,在系統(tǒng)開(kāi)發(fā)時(shí)需要精心地對(duì)首頁(yè)進(jìn)行設(shè)計(jì)。</p><p>  本系統(tǒng)在頁(yè)面設(shè)計(jì)上采用傳統(tǒng)的排版方式,主要有首部導(dǎo)航欄、左側(cè)顯示區(qū)和主顯示區(qū)3部分組成,如圖5.1所示。</p><p>  首部導(dǎo)航欄:包括留言簽寫(xiě)鏈接、管理留言

95、鏈接及用戶注冊(cè)鏈接。</p><p>  左側(cè)顯示區(qū):包括用戶登錄、文章顯示、檢索留言、最新留言等模塊。</p><p>  主顯示區(qū):為留言瀏覽和顯示等信息。</p><p>  圖5.1 網(wǎng)絡(luò)留言板首頁(yè)</p><p>  5.3用戶登錄模塊的實(shí)現(xiàn)</p><p>  用戶登錄模塊設(shè)計(jì)在首頁(yè)中,使用戶在需要留言時(shí)能

96、夠快捷方便地登錄。當(dāng)用戶輸入用戶名和密碼并登錄成功后,用戶登錄模塊就不在顯示在首頁(yè)中,直到用戶注銷在線狀態(tài)。用戶登錄模塊如圖5.2所示。當(dāng)?shù)顷懣蛑休斎氲挠脩裘兔艽a在數(shù)據(jù)庫(kù)中存在時(shí),利用全局?jǐn)?shù)組$_SESSION[]保存此次登錄用戶的信息,并提示登錄成功,如圖5.3所示。</p><p>  圖5.2 用戶登錄 圖5.3 提示登錄成功</

97、p><p>  用戶登錄時(shí)的進(jìn)行用戶名及密碼匹配的業(yè)務(wù)操作代碼如下。</p><p><b>  <?php</b></p><p>  require("conn.php");</p><p>  $username =trim($_POST['username']);</p

98、><p>  $pwd = md5(trim($_POST['password']));</p><p>  $sql = "select nicheng from tb_user where username = '".$username."' and pwd = '".$pwd."'"

99、;;</p><p>  $check_result = mysql_query($sql);</p><p>  if($result = mysql_fetch_array($check_result)){</p><p>  $_SESSION['check'] = 3;</p><p>  $_SESSION['

100、;username'] = $username;</p><p>  $_SESSION['nicheng'] = $result[0];</p><p><b>  ?></b></p><p>  <script language="javascript"></p>

101、<p>  alert("登錄成功!");location='index.php';</p><p><b>  </script></b></p><p><b>  <?php </b></p><p><b>  }else{</b&g

102、t;</p><p><b>  ?></b></p><p>  <script language="javascript"></p><p>  alert("對(duì)不起,你輸入的用戶名或密碼不正確!請(qǐng)重新輸入。");location='index.php';</p

103、><p><b>  </script></b></p><p><b>  <?php</b></p><p><b>  }</b></p><p>  5.4首頁(yè)查看留言的實(shí)現(xiàn)</p><p>  (1) 可查看留言的用戶分為兩種,即

104、注冊(cè)用戶和非注冊(cè)用戶(游客)。</p><p>  注冊(cè)用戶除了可以查看其他用戶的留言和版主的回復(fù)外,還可以看到自己給版主的悄悄話及版主對(duì)此悄悄話的回復(fù),在此非注冊(cè)用戶只有瀏覽其他用戶的留言和版主的回復(fù)的權(quán)限。在注冊(cè)用戶與非注冊(cè)用戶的區(qū)分上用到了變量$_SESSION[‘username’]中保存的用戶名。當(dāng)首頁(yè)被打開(kāi)時(shí),如果$_SESSION[‘username’]沒(méi)被設(shè)置,就可以確定當(dāng)前的用戶為非注冊(cè)用戶,在

105、本頁(yè)面中沒(méi)有查看悄悄話的權(quán)限;如果$_SESSION[‘username’]不為空,就可以確定當(dāng)前用戶為注冊(cè)用戶。非注冊(cè)用戶查看留言的效果如圖5.4所示,注冊(cè)用戶查看留言的效果如圖5.5所示。</p><p>  圖5.4 非注冊(cè)用戶查看留言效果</p><p>  圖5.5 注冊(cè)用戶查看留言效果</p><p>  (2) 在首頁(yè)的留言顯示及查看模塊中,采用分頁(yè)技

106、術(shù)。</p><p>  確定記錄跨度$row_per_page,即每頁(yè)顯示的記錄數(shù),設(shè)置每頁(yè)顯示三條留言信息,根據(jù)公式“總記錄數(shù)/跨度”,如果有余數(shù)則進(jìn)位取整來(lái)計(jì)算總頁(yè)數(shù)$page_count。獲取傳遞的當(dāng)前頁(yè)數(shù)$page_num,通過(guò)三目運(yùn)算符計(jì)算判斷第一頁(yè)或者最后一頁(yè)的位置。最后為SQL語(yǔ)句添加limit子句,計(jì)算查詢的起始位置并執(zhí)行SQL語(yǔ)句,將結(jié)果集存儲(chǔ)到數(shù)組中。實(shí)現(xiàn)代碼如下。</p>&

107、lt;p>  if($_GET){</p><p>  //得到要提取的頁(yè)碼</p><p>  $page_num = $_GET['page_num']? $_GET['page_num']: 1;</p><p><b>  }</b></p><p><b>  e

108、lse{</b></p><p>  //首次進(jìn)入時(shí),頁(yè)碼為1</p><p>  $page_num = 1;</p><p><b>  }</b></p><p><b>  //得到總記錄數(shù)</b></p><p>  $DB->query($sql

109、);</p><p>  $row_count_sum = $DB->get_rows();</p><p>  //每頁(yè)記錄數(shù),可以使用默認(rèn)值或者直接指定值</p><p>  $row_per_page = 3;</p><p><b>  //總頁(yè)數(shù)</b></p><p>  $pa

110、ge_count = ceil($row_count_sum/$row_per_page);</p><p>  //判斷是否為第一頁(yè)或者最后一頁(yè)</p><p>  $is_first = (1 == $page_num) ? 1 : 0;</p><p>  $is_last = ($page_num == $page_count) ? 1 : 0;</p

111、><p><b>  //查詢起始行位置</b></p><p>  $start_row = ($page_num-1) * $row_per_page;</p><p>  //為SQL語(yǔ)句添加limit子句</p><p>  $sql .= " limit $start_row,$row_per_page&

112、quot;;</p><p><b>  //執(zhí)行查詢</b></p><p>  $DB->query($sql);</p><p>  $res = $DB->get_rows_array();</p><p><b>  //結(jié)果集行數(shù)</b></p><p&g

113、t;  $rows_count=count($res);</p><p>  分頁(yè)控制鏈接的代碼實(shí)現(xiàn)如下。</p><p>  <td align="center" bgcolor="#F9F8EF">『&nbsp;當(dāng)前第&nbsp;<font color="#AA0066"><?ph

114、p echo $page_num;?></font>&nbsp;頁(yè)/共&nbsp;<font color="#AA0066"><?php echo $page_count;?>&nbsp;</font>頁(yè)&nbsp;』&nbsp;&nbsp;每頁(yè)『&nbsp;<font color="#AA

115、0066"><?php echo $row_per_page;?></font>&nbsp;』條&nbsp;&nbsp;&nbsp;&nbsp;</p><p><b>  <?php</b></p><p>  if(!$is_first){</p><p>

116、;<b>  ?></b></p><p>  <a href="./index.php?page_num=1">第一頁(yè)</a> <a href="./index.php?page_num=<?php echo ($page_num-1) ?>">上一頁(yè)</a></p>&

117、lt;p><b>  <?php}</b></p><p>  else{?> 第一頁(yè)&nbsp;&nbsp;上一頁(yè)<?php}</p><p>  if(!$is_last){</p><p><b>  ?></b></p><p>  <a

118、href="./index.php?page_num=<?php echo ($page_num+1) ?>">下一頁(yè)</a> <a href="./index.php?page_num=<?php echo $page_count ?>">最后一頁(yè)</a></p><p><b>  <?p

119、hp</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  ?></b></p><p>  下一頁(yè)&am

120、p;nbsp;&nbsp;最后一頁(yè)</p><p><b>  <?php</b></p><p><b>  }</b></p><p><b>  ?></b></p><p>  &nbsp; <a href="./user_n

121、ote_read.php?id=-1" target="_blank"> <span class="style2">全部留言</span> </a></td></p><p><b>  </tr></b></p><p><b>  <

122、/table></b></p><p>  5.5留言搜索的實(shí)現(xiàn)</p><p>  信息檢索是對(duì)已存在與數(shù)據(jù)庫(kù)中的數(shù)據(jù)按條件進(jìn)行篩選瀏覽,是查看歷史信息和確認(rèn)數(shù)據(jù)操作最為快速、有效的辦法。</p><p>  在留言板中檢索版塊中輸入欲查詢的關(guān)鍵字,對(duì)指定條件的留言信息進(jìn)行模糊查詢,并輸出與查詢條件相匹配的結(jié)果到瀏覽器。本模塊的搜索可根據(jù)標(biāo)題、內(nèi)

123、容、姓名及時(shí)間等任一個(gè)關(guān)鍵字進(jìn)行檢索。留言搜索模塊效果如圖5.6所示。</p><p>  這里用到了like運(yùn)算符配合通配符進(jìn)行模糊的查詢,實(shí)現(xiàn)留言的檢索功能。</p><p>  $sql = "select note.*,noan.* from tb_note as note left join tb_note_answer as noan on note.note_id

124、= noan.noan_note_id";</p><p>  $sql.=" where note.note_title like '%".$key_words."%' or note.note_content like '%".$key_words."%' or note.note_time like '%&q

125、uot;.$key_words."%' or note.note_user like '%".$key_words."%'";</p><p>  $DB->query($sql);</p><p>  $note = $DB->get_rows_array($sql);</p><p>&

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論