BBS論壇畢業(yè)論文_第1頁
BBS論壇畢業(yè)論文_第2頁
BBS論壇畢業(yè)論文_第3頁
BBS論壇畢業(yè)論文_第4頁
BBS論壇畢業(yè)論文_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第一章 緒 論 . 1 第二章 BBS 論壇的介紹 . 2 第三章 開發(fā)環(huán)境概述 . 3 3 1 關(guān)鍵技術(shù) . 3 3 2 數(shù)據(jù)庫技術(shù) . 6 3 3 VBScript 及 JavaScript 腳本語言 . 7 第四章 系統(tǒng)總體規(guī)劃與設(shè)計(jì) . 9 4 1 數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì) . 9 4 2 系統(tǒng)結(jié)構(gòu)的設(shè)計(jì) . 10 4 3 系統(tǒng)的綜合要求 . 12 4 4 系統(tǒng)的數(shù)據(jù)元素要求 . 13 4 5 系統(tǒng)的邏輯模型 . 18 第五章 系統(tǒng)主要功能詳細(xì)設(shè)計(jì) . 19 5 1 基本算法 . 19 5 2 ASP 網(wǎng)頁數(shù)據(jù)庫的連接 . 20 5 3 ASP 網(wǎng)頁數(shù)據(jù)庫的操作 . 22 5 4 ASP 網(wǎng)頁安全性的實(shí)現(xiàn)方法 . 25 5 5 在貼子中實(shí)現(xiàn)超文本信息輸入和顯示 . 28 第六章 系統(tǒng)的運(yùn)行效果 . 32 6 1 運(yùn)行環(huán)境 . 32 6 2 運(yùn)行結(jié)果 . 32 第七章 總結(jié)與展望 . 33 致 謝 . 33 參考文獻(xiàn) . 34 第一章 緒 論 進(jìn)入二十一世紀(jì),計(jì)算機(jī)技術(shù)迅速向著網(wǎng)絡(luò)化、集成化方向發(fā)展。傳統(tǒng)的單機(jī)版應(yīng)用軟件正在逐漸退出舞臺(tái),取而代之的是支持網(wǎng)絡(luò)、支持多種數(shù)據(jù)信息(多媒體)的新一代網(wǎng)絡(luò)版應(yīng)用軟件,而目前網(wǎng)絡(luò)版軟件中似乎存在著兩種不同的趨勢(shì),一種是稱為客戶端 服務(wù)器的 C/S 結(jié)構(gòu)應(yīng)用系統(tǒng),這類軟件具有結(jié)構(gòu)嚴(yán)謹(jǐn),運(yùn)行效率高,服務(wù)器端壓力小,安全性好等優(yōu)點(diǎn),被廣泛運(yùn)用于局域網(wǎng)中。而另一種,也是本畢業(yè)設(shè)計(jì)所采用的,是稱為瀏覽器 服務(wù)器的 B/S 結(jié)構(gòu)應(yīng)用系統(tǒng),它的特點(diǎn)是在客戶端直接采用了功 能強(qiáng)大的瀏覽器軟件作為界面,其優(yōu)點(diǎn)在于軟件開發(fā)效率高,客戶端不受操作平臺(tái)的限制、也不受地域的限制,網(wǎng)絡(luò)傳輸量少,即適用于局域網(wǎng),更適用于 Internet,而且投資小、見效快,用戶可以不必進(jìn)行服務(wù)器方面的投資,而是去租用,甚至是免費(fèi)使用 ISP 的服務(wù)器資源,因而受到越來越多中小型單位的青睞。 Internet 起源于 20 世紀(jì) 60 年代末、 70 年代初,當(dāng)時(shí),美國國防部為了將充斥于軍事基地內(nèi)各種廠商的電腦主機(jī)互連,讓它們可以進(jìn)行數(shù)據(jù)交換以便研究工作順利進(jìn)行,于是成立了 ARPA 網(wǎng)絡(luò)計(jì)劃。 ARPA 計(jì)劃嘗試建設(shè)一個(gè)網(wǎng)絡(luò)系統(tǒng), 它可將各種不同廠商的電腦連接起來。隨著這個(gè)計(jì)劃的成功,各學(xué)術(shù)單位,研究機(jī)構(gòu)也紛紛與 ARPA 計(jì)劃所建立的 ARPANet 連接。到了 20 世紀(jì) 80 年代, Internet 這個(gè)名詞因勢(shì)產(chǎn)生,它代表著這十年來所構(gòu)建涵蓋全球各地的網(wǎng)絡(luò)系統(tǒng)。從 1990 年起,商業(yè)使用的 Internet 在美國急速地?cái)U(kuò)大,而 Internet 也從原來屬于少數(shù)人使用的網(wǎng)絡(luò)系統(tǒng)轉(zhuǎn)變?yōu)槠胀ò傩找材軌蚴褂玫木W(wǎng)絡(luò)系統(tǒng)。 最初的 Internet 資源服務(wù)都還停留在文本模式, 1989 年,量子物理實(shí)驗(yàn)室( CERN)下的一個(gè)研究小組著手開發(fā)一種全新的 Internet 服務(wù),它可以在網(wǎng)絡(luò)上傳送圖片、文本、影像、聲音等多媒體數(shù)據(jù)。于是由 Tim Berners Lee 領(lǐng)導(dǎo)的小組開發(fā)出了一種主從、分布式的網(wǎng)絡(luò)服務(wù)系統(tǒng),這就是 WWW,俗稱 “萬維網(wǎng) ”。 所謂 WWW 其實(shí)就是連上 Web 服務(wù)器訪問資源,取得的內(nèi)容就是所謂的 “主頁 ”(HomePage)。進(jìn)入的網(wǎng)頁通常不會(huì)只有一頁,而是整個(gè)網(wǎng)站的內(nèi)容。 “網(wǎng)站 ”是一種呈現(xiàn)在網(wǎng)絡(luò)上的新興媒體,通過 Internet 已經(jīng)成為一個(gè)實(shí)時(shí)的,多媒體的信息傳播渠道。它的載體主要是電腦,范圍覆蓋全球各地,沒有國界,不分人種,時(shí)時(shí)刻刻地提供服務(wù)。目 前,人們漸漸開始把網(wǎng)站稱之為廣播、電視、報(bào)刊以外的第四新聞媒體,以 “共享、公平、公正、創(chuàng)新、國際化、團(tuán)隊(duì)精神 ”為特征的網(wǎng)絡(luò)文明也已逐漸成為這個(gè)時(shí)代的標(biāo)志,人們?cè)絹碓搅?xí)慣于通過 Internet 網(wǎng)絡(luò)獲取信息,通過 Internet 在網(wǎng)站上發(fā)表自己對(duì)社會(huì)對(duì)生活的理解和建議。 本文設(shè)計(jì)實(shí)現(xiàn)一個(gè)基于 Web 的通用 BBS 網(wǎng)站,具有 BBS 網(wǎng)站應(yīng)該具有的相關(guān)功能。 第二章 BBS 論壇概述 BBS 系統(tǒng)就是提供給注冊(cè)用戶一個(gè)平臺(tái),會(huì)員用戶可以通過 Internet 接入,登錄論壇,在這個(gè)平臺(tái)上發(fā)表文章、閱讀文章、回復(fù)文章 等等。 此類系統(tǒng)通常有以下四種類型的操作用戶:匿名用戶、普通用戶、版面管理員、超級(jí)管理員。每類用戶有其不同的操作集,系統(tǒng)通常提供一個(gè)統(tǒng)一的登錄頁面,此頁面應(yīng)能自動(dòng)識(shí)別不同級(jí)別的用戶,并提供不同的操作界面。與之相應(yīng),此類系統(tǒng)通常應(yīng)具有以下功能:用戶注冊(cè)、用戶登錄、發(fā)表文章、閱讀文章、回復(fù)文章、分頁查找、主題查找、作者查找、個(gè)人資料維護(hù)、找回密碼、版面管理、版主管理、用戶管理、友情鏈接管理等等,所有操作都可以由用戶在客戶端瀏覽器中完成,而服務(wù)器端程序會(huì)按用戶的要求來完成對(duì)系統(tǒng)數(shù)據(jù)的操作,并將結(jié)果傳給 Web 服 務(wù)器,再由 Web 服務(wù)器處理成 HTML 文件后發(fā)送到客戶端瀏覽器。這就是所謂的 B/S 結(jié)構(gòu)應(yīng)用系統(tǒng), B/S 結(jié)構(gòu)即 Browser/Server(瀏覽器 /服務(wù)器 )結(jié)構(gòu),是隨著 Internet 技術(shù)的興起,對(duì) C/S 結(jié)構(gòu)的一種變化或者改進(jìn)的結(jié)構(gòu)。 C/S 結(jié)構(gòu),即 Client/Server(客戶機(jī) /服務(wù)器 )結(jié)構(gòu),是大家熟知的軟件系統(tǒng)體系結(jié)構(gòu),通過將任務(wù)合理分配到 Client 端和 Server 端,降低了系統(tǒng)的通訊開銷,可以充分利用兩端硬件環(huán)境的優(yōu)勢(shì)。早期的軟件系統(tǒng)多以此作為首選設(shè)計(jì)標(biāo)準(zhǔn)。 B/S 結(jié)構(gòu)下,用戶界面完全通過 WWW 瀏覽器實(shí)現(xiàn),一部分事務(wù)邏輯在前端實(shí)現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端實(shí)現(xiàn),形成所謂 N-Tier 結(jié)構(gòu)。 B/S 結(jié)構(gòu),主要是利用了不斷成熟的 WWW 瀏覽器技術(shù),結(jié)合瀏覽器的多種 Script 語言 (VBScript、 JavaScript)和 ActiveX 技術(shù),用通用瀏覽器就實(shí)現(xiàn)了原來需要復(fù)雜專用軟件才能實(shí)現(xiàn)的強(qiáng)大功能,并節(jié)約了開發(fā)成本,是一種全新的軟件系統(tǒng)構(gòu)造技術(shù)。隨著 Windows 98/Windows 2000 將瀏覽器技術(shù)植入操作系統(tǒng)內(nèi)部,這種結(jié)構(gòu)更成為當(dāng)今應(yīng)用軟件的首選體系結(jié)構(gòu)。 將應(yīng)用程序分成好幾個(gè)離散邏 輯組件,就是多層式結(jié)構(gòu) (N-Tier) 應(yīng)用程序。最常見的選擇是分成三個(gè)部分:表示層、事務(wù)邏輯層和數(shù)據(jù)層( 3-Tier) ,不過也有其它的組合。多層式結(jié)構(gòu)應(yīng)用程序,在一開始是解決某些與傳統(tǒng)客戶端 /服務(wù)器 (主從式 ) 應(yīng)用程序相關(guān)的問題,但是隨著 Web 的出現(xiàn),此結(jié)構(gòu)已經(jīng)成為主導(dǎo)新程序之開發(fā)的結(jié)構(gòu)。下面就是 3-Tier 結(jié)構(gòu)各層功能以及經(jīng)常采用的技術(shù)作個(gè)簡介: 表示層主要運(yùn)行于客戶端瀏覽器,采用 Script (腳本 )語言編寫。 HTML、 JavaScript、 VBScript 是此類應(yīng)用系統(tǒng)中展示層最常用的腳 本編制語言,結(jié)合 CCS 以及 ActiveX 技術(shù),能設(shè)計(jì)出交互相當(dāng)靈活功能又相當(dāng)強(qiáng)大的客戶端網(wǎng)頁。 事務(wù)邏輯層設(shè)計(jì)通常有三個(gè)選擇: ASP 網(wǎng)頁、 COM 或 COM+組件、 DBMS 中所執(zhí)行的預(yù)存程序。將程序代碼的一部分,建立成執(zhí)行于數(shù)據(jù)庫管理系統(tǒng) (DBMS) 中的預(yù)存程序,使數(shù)據(jù)與程序代碼儲(chǔ)存在相同的位置,有助于最佳化執(zhí)行效率,但是,預(yù)存程序都依賴于特定的數(shù)據(jù)庫系統(tǒng),在編寫和偵錯(cuò)方面都相當(dāng)復(fù)雜,只適宜于大型的商業(yè)應(yīng)用系統(tǒng)。以 COM 對(duì)象的方式,編寫中間層 (Middle Tier) 事務(wù)邏輯,可以使用全功能的語 言,來產(chǎn)生經(jīng)過編譯的執(zhí)行程序,執(zhí)行效率也相當(dāng)高,此外,在 COM 對(duì)象中包裝事務(wù)邏輯,還可以清楚地將此程序代碼與網(wǎng)頁內(nèi)含的展示程序代碼分隔,這樣可以使應(yīng)用程序更易于維護(hù),但是, COM 對(duì)象的部署也有一定的麻煩,新編寫的組件對(duì)象,只有在服務(wù)器重新啟動(dòng)后才能被應(yīng)用程序調(diào)用。用 ASP 網(wǎng)頁設(shè)計(jì)事務(wù)邏輯相對(duì)來說比較簡單,但是, ASP 網(wǎng)頁采用腳本語言來編寫事務(wù)邏輯,比如VBScript,程序代碼只有在執(zhí)行時(shí)才被翻譯,這樣會(huì)降低執(zhí)行效能,此外, ASP 網(wǎng)頁中的程序代碼也是難以維護(hù)的,因?yàn)槭聞?wù)邏輯程序代碼與建立使用者接口的 展示程序代碼彼此混雜在一起。 數(shù)據(jù)層較為靈活,視系統(tǒng)規(guī)??蛇x擇 Sybase、 Oracle、 My SQL、 SQL server 或者 MS Access。 綜上所述,結(jié)合 BBS 論壇系統(tǒng)實(shí)際需要,本 BBS 系統(tǒng)采用 B/S 結(jié)構(gòu)。論文設(shè)計(jì)開發(fā)的系統(tǒng)為通用 BBS 系統(tǒng),系統(tǒng)應(yīng)該具備較大的可伸縮性,應(yīng)該能適應(yīng)最基本應(yīng)用最廣泛的 WEB 平臺(tái)。另外,通用系統(tǒng)應(yīng)該具備較大的可擴(kuò)展性,目前, ASP.NET 技術(shù)發(fā)展較快,未來應(yīng)該能以較小的成本用 ASP.NET 重寫本系統(tǒng),因此,這次設(shè)計(jì)開發(fā)的 BBS 論壇事務(wù)邏輯層設(shè)計(jì)采用 ASP 網(wǎng)頁;至 于數(shù)據(jù)層,本系統(tǒng)采用最基本的MS Access 數(shù)據(jù)庫系統(tǒng),重寫時(shí)采用 SQL 等大型數(shù)據(jù)庫。 第三章 開發(fā)環(huán)境概述 設(shè)計(jì)開發(fā)的 BBS 論壇系統(tǒng)要求客戶端支持 IE6.0 以上或與之兼容的瀏覽器軟件,客戶端硬件最低要求對(duì)應(yīng)于 IE6.0 的硬件平臺(tái)要求。服務(wù)器端要求支持 ASP 以及 MS Access 數(shù)據(jù)庫。 BBS 論壇的開發(fā)環(huán)境和開發(fā)工具為: Windows xp, PWS, FrontPage2000, MS Access。 3 1 關(guān)鍵技術(shù) 3 1 1 ASP 技術(shù) ASP 技術(shù)是一種類似 HTML(Hypertext Markup Language 超文本標(biāo)識(shí)語言 )、 Script 與 CGI(Common Gateway Interface 通用網(wǎng)關(guān)接口 )的結(jié)合體,簡單的講它是一種運(yùn)行于服務(wù)器的腳本語言,但是其運(yùn)行效率比 CGI 更高、程序編制也比 HTML 更方便且更有靈活性,程序安全性及保密性也遠(yuǎn)比 Script 好。 其特點(diǎn)歸納如下: 1. ASP 可以和 HTML 或其他腳本語言 (VB Script 與 Java Script)互相嵌套。 2. ASP 是一種在 Web 服務(wù)器端運(yùn)行的腳本語言,因此,程序代碼完全保密。 3. ASP 以對(duì)象為基礎(chǔ), 因此可以使用 ActiveX 控件繼續(xù)擴(kuò)充其功能。 4. ASP 內(nèi)置 ADO 組件,因此可以輕松地存取各種數(shù)據(jù)庫,大大縮短了程序開發(fā)時(shí)間。 5. ASP 可以將運(yùn)行結(jié)果以 HTML 的格式傳送至客戶端瀏覽器,因此 ASP 可以適用于各種瀏覽器。 下面來介紹一下 ASP 的幾個(gè)內(nèi)置對(duì)象。 1.Request 對(duì)象。 HTTP 通訊協(xié)議是一種請(qǐng)求與響應(yīng) (Request/Response)的通訊協(xié)議,因此通常由客戶端向 Web 服務(wù)器提出請(qǐng)求, Web 服務(wù)器才會(huì)響應(yīng)信息。因此在 ASP 中,特別將 “客戶端提出的要求 ”與 “Web 服務(wù)器響應(yīng)的信息 ”等動(dòng)作 封裝成 Request 對(duì)象與 Response 對(duì)象。換而言之, Request 對(duì)象通常包含了用戶端的相關(guān)信息,如瀏覽器的種類、表頭信息、表單參數(shù)及 cookies 等等。 2.Response 對(duì)象 ,每一種程序語言或開發(fā)工具一定都有與用戶溝通的界面或函數(shù), ASP 也不例外。在 ASP 中負(fù)責(zé)將信息傳達(dá)到用戶的對(duì)象就是 Response 對(duì)象。 3.Server 對(duì)象, Server 對(duì)象允許用戶取得服務(wù)器提供的各項(xiàng)功能,例如, Server 對(duì)象的 CreateObject 方法允許客戶端用戶建立一個(gè) ActiveX Server 組件實(shí)例,其所 建立組件實(shí)例會(huì)隨著服務(wù)器端完成 ASP網(wǎng)頁的處理而自動(dòng)被釋放。如果希望此對(duì)象實(shí)例可以跨多個(gè) ASP 網(wǎng)頁,就要用到 Session 對(duì)象保留該組件實(shí)例,直到 Session 對(duì)象的運(yùn)行時(shí)間到了,或是在其他 ASP 網(wǎng)頁調(diào)用 Session 對(duì)象的 Abandon 方法,此組件實(shí)例才會(huì)被釋放。 4.Session 對(duì)象, Session 對(duì)象在 ASP 程序編寫中占了相當(dāng)重的份量,由于網(wǎng)頁是一種無狀態(tài)的程序,因此幾乎無法知道用戶的瀏覽狀態(tài)。必須通過 Session 對(duì)象記錄用戶的相關(guān)信息,以供用戶再次對(duì)此 Web服務(wù)器提出要求時(shí)作確認(rèn),例如,在某些特 定的網(wǎng)頁中,常需要用戶輸入確認(rèn)的賬號(hào)和密碼,假如這些身份確認(rèn)的結(jié)果無法保留,那豈不是每一個(gè)網(wǎng)頁都需要重新輸入一次密碼。換而言之,每一個(gè) Session 的用戶, Web 服務(wù)器均會(huì)自動(dòng)的為它們建立一個(gè) Session。必須說明, Session 對(duì)象只能適用于具備 Cookie功能的瀏覽器。 3 1 2 ADO 技術(shù) ADO(ActiveX Data Objects)是微軟公司提供給網(wǎng)頁開發(fā)者在網(wǎng)頁中存取數(shù)據(jù)庫的最新技術(shù),它也是 ASP 內(nèi)置的重要組件, ADO 主要的目的是為了存取或修改數(shù)據(jù)源的數(shù)據(jù)、或增加數(shù)據(jù)到指定的數(shù)據(jù)源,數(shù)據(jù) 源不僅包括數(shù)據(jù)庫,而且包括 dBase、 Excel、 Foxpro、 Access 或文本文件等一些小型的數(shù)據(jù)表,所以,只要是 ODBC 驅(qū)動(dòng)程序所能存取的數(shù)據(jù)源皆是 ADO 存取的對(duì)象。 ADO 主要是由 Connection 對(duì)象、Command 對(duì)象、 Parameter 對(duì)象、 Recordset 對(duì)象、 Field 對(duì)象、 Property 對(duì)象及 Error 對(duì)象等七個(gè)對(duì)象與 Fields 數(shù)據(jù)集合、 Properties 數(shù)據(jù)集合、 Parameters 數(shù)據(jù)集合及 Errors 數(shù)據(jù)集合等四個(gè)數(shù)據(jù)集合所組合而成,其功能概述如下。 ADO 提供的七個(gè)對(duì)象: 1. Connection 對(duì)象負(fù)責(zé)與指定的數(shù)據(jù)源進(jìn)行連接,除此之外,它還可以通過事物 (Transaction)來確保在事物中所有的數(shù)據(jù)源變更的全部成功。 2. Command 對(duì)象負(fù)責(zé)對(duì)數(shù)據(jù)庫提供請(qǐng)求,也就是傳遞指定的 SQL 命令。換而言之, Command 對(duì)象必須經(jīng)過一個(gè)已經(jīng)建立的連接 (Connection 對(duì)象 )發(fā)出數(shù)據(jù)操作語言 (DML,Data Manipulation Language)來操作數(shù)據(jù)源的數(shù)據(jù),這些命令通常包括 INSERT(增加記錄 )、 DELETE(刪除記錄 )、 UPDATE(更新記錄 )、或是 SELECT(以 Recordset 的形式選取數(shù)據(jù) )等。除此之外,也可以通過 Command 對(duì)象對(duì)數(shù)據(jù)庫發(fā)出數(shù)據(jù)定義語言 (DDL,Data Definition Language),例如 CREATE TABLE(建立數(shù)據(jù)表 )、 DROP TABLE(刪除數(shù)據(jù)表 )或 ALTER TABLE(修改數(shù)據(jù)表結(jié)構(gòu) )等。 3. Parameter 對(duì)象負(fù)責(zé)傳遞 Command 對(duì)象所需要的 SQL 命令參數(shù)。 4. RecordSet 對(duì)象負(fù)責(zé)瀏覽和操作從數(shù)據(jù)庫取出的數(shù)據(jù),換而言之, RecordSet 對(duì)象就象是一個(gè)二維的數(shù)組,數(shù)組的每一行表 示一個(gè)數(shù)據(jù)記錄,而每個(gè)數(shù)劇列包含一個(gè)或多個(gè)數(shù)據(jù)字段,即 Field 對(duì)象。 5. Field 對(duì)象表示指定 RecordSet 對(duì)象的數(shù)據(jù)字段。 6. Property 對(duì)象表示 ADO 的各項(xiàng)對(duì)象屬性值,換而言之,每個(gè) ADO 對(duì)象都會(huì)有一組描述和控制對(duì)象行的屬性。 7. Error 對(duì)象負(fù)責(zé)記錄連接過程所發(fā)生的錯(cuò)誤信息。 ADO 提供的四個(gè)數(shù)據(jù)集合: 1. Connection 對(duì)象包含 Errors 數(shù)據(jù)集合,在 Errors 數(shù)據(jù)集合中包含數(shù)劇源響應(yīng)失敗時(shí)所建立的 Error對(duì)象。 2. Command 對(duì)象包含 Parameters 數(shù)據(jù) 集合,在 Parameters 數(shù)據(jù)集合中包括 Command 對(duì)象所有的 Parameter 對(duì)象。 3. RecordSet 對(duì)象包含 Fields 數(shù)據(jù)集合,在 Fields 數(shù)據(jù)集合中包含 RecordSet 對(duì)象的所有 Field 數(shù)據(jù)字段對(duì)象。 4. Connection 對(duì)象、 Command 對(duì)象、 RecordSet 對(duì)象與 Field 對(duì)象皆包含一個(gè) Properties 數(shù)據(jù)集合,在 Properties 數(shù)據(jù)集合中包含所對(duì)應(yīng) Connection 對(duì)象、 Command 對(duì)象、 RecordSet 對(duì)象與 Field 對(duì)象的 Property 對(duì)象。 3 2 數(shù)據(jù)庫技術(shù) 1、 MS Access 數(shù)據(jù)庫 數(shù)據(jù)庫( Database)是一系列信息資源的集合。在一個(gè)數(shù)據(jù)庫中,與一個(gè)項(xiàng)目有關(guān)的所有信息都可以叫做一條記錄 (Record)。每一條記錄都是由一系列的字段 (Field)組成的。一系列記錄的集合就構(gòu)成了數(shù)據(jù)表格 (Table)。對(duì)于一個(gè)簡單的 “平面文件 ”的數(shù)據(jù)庫來說,它僅包含了一個(gè)數(shù)據(jù)表格,而對(duì)一個(gè) “關(guān)系型 ”數(shù)據(jù)庫來說,它卻包含兩個(gè)或兩個(gè)以上的數(shù)據(jù)表格,表格的各字段之間存在這一種或多種關(guān)系(有時(shí)可以把這種關(guān)系叫做 “鏈接 ”)。 簡單的平面文件數(shù)據(jù)庫的 用途非常有限,而關(guān)系型數(shù)據(jù)庫卻能夠包含數(shù)據(jù)以百萬計(jì)甚至以億計(jì)的記錄,并可以利用復(fù)雜的標(biāo)準(zhǔn)對(duì)這些記錄進(jìn)行操作,例如排序和統(tǒng)計(jì)。把它們叫做 “關(guān)系型 ”數(shù)據(jù)庫,是因?yàn)樾枰谶@些數(shù)據(jù)表格的字段之間建立特定的鏈接關(guān)系。關(guān)系型數(shù)據(jù)庫的優(yōu)點(diǎn)在于:通過將一個(gè)表格中的字段與另一個(gè)表格中的字段聯(lián)系起來,兩個(gè)表格之間的信息可以相互調(diào)用,可以避免信息的重復(fù)記錄,也可以避免管理上的混亂。因此關(guān)系型數(shù)據(jù)庫可以減小數(shù)據(jù)庫的體積,這對(duì)于大型的數(shù)據(jù)庫來說具有非常重要的意義。 建立 WEB 站點(diǎn)時(shí),可以使用兩種主要的數(shù)據(jù)庫: Microsoft SQL Server 和 Microsoft Access。 Micro SQL Server 是一種功能齊全的客戶機(jī) /服務(wù)器數(shù)據(jù)庫產(chǎn)品,適用于系統(tǒng)經(jīng)常被大量的用戶查詢的情況。對(duì)于查詢次數(shù)有限的情況,則可以采用中小型數(shù)據(jù)庫的代表產(chǎn)品 Microsoft Access。 Microsoft Access是理想的入門級(jí)產(chǎn)品,其中提供了大量的向?qū)В梢暂o助完成數(shù)據(jù)庫的創(chuàng)建和管理。 2、數(shù)據(jù)源 (DSN) ASP 網(wǎng)頁通過 DSN 數(shù)據(jù)源或者 DSN-less 方式連接網(wǎng)頁數(shù)據(jù)庫。 DSN 數(shù)據(jù)源方式: ASP 網(wǎng)頁通過標(biāo)準(zhǔn)的 ODBC( Open DataBase Connectivity)數(shù)據(jù)源 DSN( Data Source Name)接口訪問數(shù)據(jù)庫數(shù)據(jù)。 ODBC 屬于一種標(biāo)準(zhǔn)的數(shù)據(jù)接口,提供各類應(yīng)用程序一個(gè)數(shù)據(jù)訪問的標(biāo)準(zhǔn)方法。 ODBC規(guī)范為應(yīng)用程序提供了一套高層調(diào)用接口規(guī)范和基本于動(dòng)態(tài)鏈接庫的運(yùn)行支持環(huán)境。使用 ODBC 開發(fā)數(shù)據(jù)庫應(yīng)用程序時(shí),應(yīng)用程序調(diào)用的是標(biāo)準(zhǔn)的 ODBC 函數(shù)和 SQL 語句,數(shù)據(jù)庫的底層操作由各個(gè)數(shù)據(jù)庫的驅(qū)動(dòng)程序完成。使用 DSN 數(shù)據(jù)源方式,用戶必須以手工的方式進(jìn)行 ODBC 配置,添加一個(gè)指向用戶數(shù)據(jù)庫的系統(tǒng)數(shù)據(jù)源 DSN, ASP 網(wǎng)頁使用 DSN 數(shù)據(jù)源字符串連接至用戶數(shù)據(jù)庫,例如: strDB-DSN=”DSN=DSN名稱 ;uid=XXX;pwd=xxx”。 DSN-less 數(shù)據(jù)源方式:使用本方式連接數(shù)據(jù)庫,就必須自行提供 DSN 數(shù)據(jù)的相關(guān)信息,最重要的是驅(qū)動(dòng)程序。例如: strDBConn=”DRIVER=Microsoft Access Driver (*.mdb); DBQ=c:userdb.mdb”。 3、結(jié)構(gòu)查詢語言( SQL) SQL 是結(jié)構(gòu)查詢語言 (Structure Query Language)的英文縮寫,它是使用關(guān)系 模型數(shù)據(jù)庫的應(yīng)用語言,由 IBM 在七十年代開發(fā)出來的,實(shí)現(xiàn)了關(guān)系型數(shù)據(jù)庫中的信息檢索。 1992 年制定了 SQL 標(biāo)準(zhǔn) SQL-92,它的全名是 “International Standard ISO/IEC9075:1992, Database Language SQL”。 SQL 標(biāo)準(zhǔn)的確定使大多數(shù)數(shù)據(jù)庫廠家紛紛采用 SQL 語言作為其數(shù)據(jù)庫檢索語言。 利用 SQL 語言,可以查詢和管理自已的數(shù)據(jù)庫。它由大約 30 條命令構(gòu)成,但實(shí)際只需要少數(shù)的幾個(gè)命令就可以完成相當(dāng)多的工作,常用的 SQL 查詢命令有: Select、 Insert、 Delete、 Update 等。 3 3 VBScript及 JavaScript腳本語言 Script(腳本 )是由一組可以在客戶端瀏覽器上運(yùn)行的命令組合而成的語言,可以把它想像成一個(gè)運(yùn)行于客戶端上的可執(zhí)行程序。目前在網(wǎng)頁編制上比較流行的腳本語言包括 VBScript 及 JavaScript。它們都是一種與 HTML 語言相似的描述性語言,也是以文本形式存在,不像 C 語言或 Java 語言那樣,需要編譯連接成字節(jié)碼形式的可執(zhí)行程序。 Script 語句可以單獨(dú)存成文檔,也可以被嵌入到 HTML 的文件之中,與 HTML 語句結(jié)合在一起。當(dāng) 需要將 Script 語句直接加入到 HTML 文件中時(shí),只要使用一個(gè) HTML 標(biāo)記符號(hào) 即可。例如: temp var i = 10; document.write (i); This is a JavaScript example. 另外, Script 程序在 HTML 中的位置 也比較自由,它可以在 HTML 文件中的任何位置。 腳本語言是一種解釋性語言,可以直接由瀏覽器來解釋執(zhí)行。并且可以直接訪問瀏覽器中的各種對(duì)象,如窗口對(duì)象、文檔對(duì)象、框架對(duì)象、超鏈接對(duì)象等。腳本語言可以實(shí)現(xiàn)的功能很多,可以用于定義網(wǎng)頁、在網(wǎng)頁中加入動(dòng)畫、對(duì)網(wǎng)頁中的各種元素進(jìn)行處理,特別是在處理表單方面有很強(qiáng)功能。不僅如此,它還可以很方便地控制瀏覽器中的各對(duì)象的屬性。例如,可以實(shí)現(xiàn)打開或關(guān)閉瀏覽器窗口、設(shè)置窗口狀態(tài)、改變窗口中的超鏈接位置等??傊?,一些常用的功能都可以用腳本語言實(shí)現(xiàn)。 開發(fā)設(shè)計(jì)得 BBS 系統(tǒng)中就運(yùn)用了 大量的腳本語言,一方面用來完成表單提交前的數(shù)據(jù)驗(yàn)證任務(wù),另一方面用來完成打開新的窗口、關(guān)閉當(dāng)前窗口、返回前一頁及下拉菜單等功能。通過使用腳本語言既防止了大量錯(cuò)誤數(shù)據(jù)被提交到服務(wù)器,進(jìn)而節(jié)約了寶貴的系統(tǒng)資源;也使網(wǎng)頁更加美觀、操作更加方便。大大提高了系統(tǒng)的性能。 1、 JavaScript Java 語言的功能很強(qiáng)大,在網(wǎng)頁設(shè)計(jì)中非常的有效,但是它要求創(chuàng)建 APPLET 的人員必須是程序設(shè)計(jì)員。Sun Microsystems(太陽微系統(tǒng))公司為了消除對(duì)于 WEB 站點(diǎn)的開發(fā)人員的特殊要求,專門發(fā)布了 JavaScript。 JavaScript 腳本語言是一種解釋性,基本對(duì)象的腳本語言。雖然,它沒有那些真正意義上的面向?qū)ο笳Z言那么多的特性,但是對(duì)于它的預(yù)期功能而言,它能夠?qū)崿F(xiàn)的功能已經(jīng)夠大了。 Javascript 并不是任何一種語言的刪節(jié)版(它只是與 Java 語言的關(guān)系很接近) ,它也不是任何一種語言的簡化版。然而,它的使用是有限的。不能使用它創(chuàng)建一個(gè)獨(dú)立的應(yīng)用,比如,它幾乎不能進(jìn)行文件的讀寫。此外, Javascript 腳本只能運(yùn)行在解釋性語言的環(huán)境下,或是 WEB 服務(wù)器和 WEB 瀏覽器上。 Javascript 是一種比較隨意的語言 ,這就并不意味著不一定必須明確地聲明變量的類型。此外,在很多情況下, Javascript 腳本語言在需要的時(shí)候可以進(jìn)行自動(dòng)轉(zhuǎn)換。 JavaScript 是 Java 與 HTML 結(jié)合的產(chǎn)物, HTML 文檔中可以嵌套 JavaScript 命令,但是 JavaScript語句不需要編譯,瀏覽器可以直接執(zhí)行 JavaScript 語句。利用 JavaScript 結(jié)合 CCS 可以創(chuàng)建交互能力很強(qiáng)的 WEB 界面。 2、 VBScript 語言 當(dāng)在設(shè)計(jì) WEB 站點(diǎn)中使用 JavaScript 時(shí), Microsoft 公司也在其非常流行的 Visual Basic 的基礎(chǔ)上,推出了另一種腳本設(shè)計(jì)語言 VBScript。 Microsoft Visual Basic Scripting Edition 是程序開發(fā)語言 Visual Basic 家族的最新成員,它將靈活的 Script 應(yīng)用于更廣泛的領(lǐng)域,包括 Microsoft Internet Explorer 中的 WEB 客戶機(jī) Script 和 Microsoft Internet Information Server 中的 WEB 服務(wù)器 Script。 JavaScript 可以支持大多數(shù)的平臺(tái),而 VBScript 目前只能在 Windows 環(huán)境下的瀏覽器中運(yùn)行。但是由于大多數(shù)用戶的操作系統(tǒng)都選用 Windowst 系列,因此,許多 WEB 站點(diǎn)的開發(fā)人員研始大量的使用 VBScript。 VBScript 流行的主要原因是它將 ActiveX 對(duì)象的使用變得非常的簡單。 ActiveX 是 Microsoft 推出的一種新技術(shù),它支持 WEB 頁面調(diào)用類似 OLE 的對(duì)象。 VBScript 使用 ActiveX Script 與宿主應(yīng)用程序?qū)υ?。使?ActiveX Script,瀏覽器和其他宿主應(yīng)用程序不再需要每個(gè) Script 部件的特殊集成代碼。 ActiveX Script 使宿主 可以編譯 Script、獲取和調(diào)用入口點(diǎn)及管理開發(fā)者可用的命名空間。通過 ActiveX Script,語言廠商可以建立標(biāo)準(zhǔn) Script 運(yùn)行時(shí)語言。 Microsoft 將提供 VBScript 的運(yùn)行時(shí)支持。 Microsoft 正在與多個(gè) Internet 組一起定義 ActiveX Script 標(biāo)準(zhǔn)以使 Script 引擎可以互換。 ActiveX Script 可用在 Microsoft Internet Explorer 和 Microsoft Internet Information Server 中。因此對(duì) VBScript 腳本語言 的使用也變得重要起來。 第四章 系統(tǒng)總體設(shè)計(jì) 4 1 數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì) 參照用戶與版面之間管理關(guān)系 ER 圖,可以將用戶、版面轉(zhuǎn)換成三個(gè)關(guān)系模式,設(shè)計(jì)如下: 1.論壇版面關(guān)系模式(版面 ID#,版面中文名,版面簡介); 2.用戶關(guān)系模式(用戶名 #,用戶密碼,用戶密碼提示問題,問題答案,用戶 EMAIL,用戶真名,用戶性別,用戶出生年月,用戶主頁,用戶證件名稱,用戶證件號(hào)碼,用戶聯(lián)系方式,用戶積分); 3.管理員關(guān)系模式(管理員 ID#,用戶名 #,申請(qǐng)管理版面 ID#,申請(qǐng)管理理由,申請(qǐng)被批示狀態(tài)); 參照用戶與貼子之 間 ER 圖,可以將其轉(zhuǎn)換成二個(gè)關(guān)系模式,設(shè)計(jì)如下: 用戶關(guān)系模式(用戶名 #,用戶密碼,用戶密碼提示問題,問題答案,用戶 EMAIL,用戶真名,用戶性別,用戶出生年月,用戶主頁,用戶證件名稱,用戶證件號(hào)碼,用戶聯(lián)系方式,用戶積分); 貼子關(guān)系模式(貼子 ID#,標(biāo)題,貼子類型,主貼子 ID,回復(fù)數(shù)量,點(diǎn)擊次數(shù),標(biāo)題圖像,貼子內(nèi)容,貼子書寫時(shí)間); 按照上述轉(zhuǎn)換方法,再結(jié)合系統(tǒng)一些功能以及性能方面的需要,系統(tǒng)所有關(guān)系模式設(shè)計(jì)如下: 論壇基本信息(論壇信息 ID#,論壇名,版權(quán)說明,論壇公告標(biāo)題,公告內(nèi)容,最后一次修改時(shí)間 ); 論壇版面信息(版面 ID#,版面中文名,版面英文名,版面簡介); 用戶基本信息(用戶名 #,用戶密碼,用戶密碼提示問題,問題答案,用戶 EMAIL,用戶真名,用戶性別,用戶出生年月,用戶主頁,用戶證件名稱,用戶證件號(hào)碼,用戶聯(lián)系方式,用戶積分); 管理員基本信息(管理員 ID#,用戶名 #,申請(qǐng)管理版面 ID#,申請(qǐng)管理理由,申請(qǐng)被批示狀態(tài)); 貼子基本信息(貼子 ID#,版面 ID#,用戶名 #,標(biāo)題,貼子類型,主貼子 ID,回復(fù)數(shù)量,點(diǎn)擊次數(shù),標(biāo)題圖像,貼子內(nèi)容,貼子書寫時(shí)間,最后一次更新貼子時(shí)間); 友情鏈接基本信 息(鏈接 ID#,用戶名 #,鏈接名,鏈接 URL,鏈接說明); 用戶訪問日志信息(日志 ID#,用戶名 #,用戶登錄 IP,登錄時(shí)間,退出時(shí)間); *注:第一個(gè)帶 “#”標(biāo)志的屬性為本關(guān)系模式的主鍵,其它為外鍵。 4 2 系統(tǒng)結(jié)構(gòu)的設(shè)計(jì) 系統(tǒng)主頁面自動(dòng)進(jìn)行身份判別,按照訪問者的身份自動(dòng)進(jìn)入其相應(yīng)的操作界面,其流程如下所示: 版主會(huì)員? 超級(jí)會(huì)員操作界面 版主會(huì)員操作界面 普通會(huì)員操作界面 匿名用戶操作界面 超級(jí)會(huì)員? 普通會(huì)員? 結(jié)束 N Y Y Y N N 開始 圖 4-1 系統(tǒng)流程圖 各類用戶的操作界面所具有的功能如下表所示: 表 4-1 各界面功能表 4 3 系統(tǒng)的綜合要求 1、 系統(tǒng)界面要求 設(shè)計(jì)開發(fā)的 BBS 論壇的初始界面假定用戶是匿名登錄,用戶可以通過初始界面提供的統(tǒng)一的用戶登錄接口,登錄進(jìn)入各自的操作界面。 用戶 類型 功能 類型 功能 過程 編號(hào) 過程名 匿名 用戶 私有 登錄為正式會(huì)員 P1-1 Userlog.asp 注冊(cè)為正式會(huì)員 P1-2 Userreg.asp 會(huì)員找回遺失密碼 P1-3 Getpass.asp 公有 查看系統(tǒng)會(huì)員列表 P1-4 Useradmin.asp 查看系統(tǒng)版主列表 P1-5 Adminorlist.asp 查看各版面文章列表 P1-6 Topic.asp?bid=XXX 查看熱門話題 P1-7 Topic.asp?method=hot 查看人氣貼子 P1-8 Topic.asp?method=hits 查看某篇文章 P1-9 Show.asp?id=XXX 普通 會(huì)員 私有 申請(qǐng)為版面版主 P2-1 Adminapply.asp?bid=XXX 注銷會(huì)員資格 P2-2 Userlogoff.asp 公有 個(gè)人資料維護(hù) P2-3 Usermodify.asp 發(fā)表貼子 P2-4 Post.asp?bid=XXX 回復(fù)貼子 P2-5 Post.asp?id=XXX&bid=XXX 重新以匿名身分登錄 P2-6 Quitbbs.asp 版主 會(huì)員 公有 貼子管理 P3-1 Articleadmin.asp 張貼公告 P3-2 Newspost.asp 友情鏈接管理 P3-3 Linkadmin.asp?bid=XXX 超級(jí) 會(huì)員 公有 論壇基本設(shè)定 P4-1 BBSset.asp 版面管理 P4-2 Boardadmin.asp 2、 系統(tǒng)功能要求 設(shè)計(jì)開發(fā)的 BBS 論壇應(yīng)具有通常 BBS 網(wǎng)站應(yīng)該具有的基本功能,包括用戶注冊(cè)、用戶登錄、匿名登錄、發(fā)表文章、閱讀文章、回復(fù)別人的文章、分頁查找、主題查找、作 者查找、多種方式排序、個(gè)人資料修改、在線人數(shù)統(tǒng)計(jì)等,此外,用戶在發(fā)表貼子時(shí),能輸入帶格式文本,用戶在發(fā)表或回復(fù)一篇貼子時(shí),能獲得相應(yīng)的積分,其積分能反應(yīng)此用戶在本論壇的活躍程度。 設(shè)計(jì)開發(fā)的 BBS 論壇的操作用戶按不同級(jí)別依次可分為:匿名用戶、普通會(huì)員用戶、版主會(huì)員用戶、超級(jí)用戶。高級(jí)別的用戶可以繼承低級(jí)別用戶的公用功能。同時(shí),各級(jí)別用戶具有一定的只有以本級(jí)別身分登錄才具有的私有功能。 匿名用戶功能要求 -通用功能:查看各版面文章、查看系統(tǒng)版主列表、查看系統(tǒng)會(huì)員列表;私有功能:注冊(cè)為系統(tǒng)正式會(huì)員、會(huì)員找回遺 失密碼、登錄為正式會(huì)員。 普通會(huì)員功能要求 -通用功能:發(fā)表或回復(fù)貼子、個(gè)人資料維護(hù)、退出或重新以匿名身分登錄;私有功能:申請(qǐng)為版面版主、注銷會(huì)員資格。 版主會(huì)員功能要求 -通用功能:貼子管理、張貼公告、友情鏈接管理。 超級(jí)用戶功能要求 -通用功能:論壇基本設(shè)定、版面管理、版主會(huì)員管理、普通會(huì)員管理。 3、 系統(tǒng)性能要求 對(duì)于貼子查看、發(fā)表貼子以及回復(fù)貼子這類頻繁發(fā)生的系統(tǒng)操作,要采取適當(dāng)?shù)募夹g(shù)優(yōu)化這類數(shù)據(jù)操作,以提高數(shù)據(jù)存取效率。 4、 安全性保密性可靠性 等其它方面的要求 高級(jí)別用戶的所有管理操作要有針對(duì)低級(jí)別用戶的身分識(shí)別功能,以防止低級(jí)別的用戶越權(quán)執(zhí)行高級(jí)別用戶才具有的操作功能。 4 4 系統(tǒng)的數(shù)據(jù)實(shí)體要求 根據(jù)論壇的功能需求,論壇管理和維護(hù)以下幾種數(shù)據(jù)元素(實(shí)體 Entity):會(huì)員、管理員、論壇、論壇版面、貼子、友情鏈接、日志。 1、會(huì)員實(shí)體 會(huì)員用戶包含這樣一些基本屬性:用戶名、用戶密碼、用戶密碼提示問題、用戶密碼提示問題答案、用戶EMAIL、用戶真名、性別、出生年月日、主頁 URL、聯(lián)系方式、證件名稱、證件號(hào)碼、積分。其中,用戶名為用戶唯一標(biāo)志,不允 許重名。積分為此用戶在本論壇發(fā)表文章以及文章被其它用戶關(guān)注程度所累積的分?jǐn)?shù),作為衡量此用戶在本論壇活躍程度的一個(gè)標(biāo)志。 2、管理員 管理員實(shí)際上派生于會(huì)員用戶,意味著只有會(huì)員用戶才有資格申請(qǐng)本論壇各版面的管理權(quán)限,因此,他除了包含會(huì)員用戶所有的基本屬性以外,還應(yīng)包含以下幾個(gè)屬性:申請(qǐng)管理版面、申請(qǐng)理由、申請(qǐng)被批準(zhǔn)狀態(tài)。一個(gè)管理員可以管理幾個(gè)版面,一個(gè)版面可以由幾個(gè)管理員管理,所以,應(yīng)該有一個(gè)管理員序號(hào)來唯一標(biāo)志這個(gè)實(shí)體。另外,管理員也分為兩類,一類是超級(jí)管理員,具有管理和維護(hù)本論壇所有數(shù)據(jù)信息的權(quán)限,另一類 是普通版主,只能管理與某版面相關(guān)的數(shù)據(jù)信息,可以用申請(qǐng)管理版面以及申請(qǐng)被批準(zhǔn)狀態(tài)來區(qū)分這兩類管理員,如果申請(qǐng)管理版面為零用申請(qǐng)被批準(zhǔn)通過,則此會(huì)員就為超級(jí)管理員,如果申請(qǐng)管理版面在本論壇存在且申請(qǐng)被批準(zhǔn)通過,則此會(huì)員就為版主管理員,否則,此會(huì)員仍為普通會(huì)員。 3、論壇 論壇基本信息比較穩(wěn)定,只能為超級(jí)管理員所維護(hù),此實(shí)體包括以下一些基本屬性:論壇名稱、論壇版權(quán)信息、論壇公告、公告內(nèi)容。 4、版面 論壇版面包含這樣一些基本屬性:中文名稱、英文名稱、版面簡介、版面公告。此外,論壇版面實(shí)體與管理員實(shí)體有聯(lián)系,與貼 子實(shí)體也有聯(lián)系。 5、貼子 貼子包含以下一些基本屬性:所屬版面,作者,標(biāo)題,貼子類型,所屬主貼,回復(fù)數(shù)量,點(diǎn)擊次數(shù),標(biāo)題圖像,貼子內(nèi)容,貼子書寫時(shí)間,最后一次更新貼子時(shí)間。貼子包括兩種類型:主貼和回復(fù)。貼子序號(hào)為此貼子唯一標(biāo)志。 6、友情鏈接 友情鏈接實(shí)體包含以下一些基本屬性:添加本鏈接管理員,鏈接名,鏈接 URL,鏈接說明。一個(gè)管理員可以添加多條友情鏈接。除超級(jí)管理員外,已添加的友情鏈接只能由添加作者修改或刪除。鏈接名,鏈接 URL 不可重復(fù),可作主鍵。 7、日志 日志包括以下一些基本屬性:登錄會(huì)員,登錄 IP,登錄時(shí)間,退出時(shí)間。 設(shè)計(jì)開發(fā)的 BBS 實(shí)體之間主要有以下幾類聯(lián)系( Relation) :用戶與論壇版面之間存在管理聯(lián)系( M: N)、用戶與貼子之間( 1: M)、用戶與友情鏈接( 1: M)、用戶與日志( 1: M)、論壇版面與貼子( 1: M)。 幾個(gè)基本實(shí)體 -聯(lián)系圖( ER 圖)如下: 管理 申請(qǐng)管理理由 批準(zhǔn)否 用戶名 密碼 EMAIL 性別 生日 其它 用戶 M 論壇版面 版面名 簡介 公告 N 圖 4-2 用戶與版面之間管理關(guān)系 eeeedeERtu 圖 發(fā)表 發(fā)表時(shí)間 用戶名 密碼 EMAIL 性別 生日 其它 用戶 1 M 貼子 標(biāo)題 類型 其它 圖 4-3 用戶與貼子之間 eeeeeEEER 圖 匿名用戶 普通會(huì)員 版主會(huì)員 超級(jí)會(huì)員 論壇 論壇版面 友情鏈接 貼子 日志 論壇數(shù)據(jù)信息處理系統(tǒng) 圖 4-4 基本 Web 的通用論壇系統(tǒng)數(shù)據(jù)流圖 4 5 系統(tǒng)的邏輯模型 系統(tǒng)邏輯模型數(shù)據(jù)流簡要說明: 1、匿名用戶與信息處理系統(tǒng)之間 系統(tǒng)的輸入數(shù)據(jù)流:注冊(cè)資料、登錄數(shù)據(jù)、找回密碼數(shù)據(jù); 系統(tǒng)的輸出數(shù)據(jù)流:用戶遺失密碼、某篇貼子內(nèi)容、會(huì)員列表、版主列表、版面列表、人氣貼子列表、熱門話題列表; 加工邏輯:注冊(cè)加工、登錄加工、用戶找回密碼加工。 2、會(huì)員用戶與信息處 理系統(tǒng)之間 系統(tǒng)的輸入數(shù)據(jù)流:版主資格申請(qǐng)、注冊(cè)資料修改、發(fā)表貼子、回復(fù)貼子; 系統(tǒng)的輸出數(shù)據(jù)流:某篇貼子內(nèi)容、會(huì)員列表、版主列表、版面列表、人氣貼子列表、熱門話題列表; 加工邏輯:版主資格申請(qǐng)、注冊(cè)資料修改、發(fā)表貼子,回復(fù)貼。 3、版主與信息處理系統(tǒng)之間 系統(tǒng)的輸入數(shù)據(jù)流:注冊(cè)資料修改、發(fā)表貼子、回復(fù)貼子、友情鏈接維護(hù)、發(fā)布公告、管理版面貼子維護(hù); 系統(tǒng)的輸出數(shù)據(jù)流:某篇貼子內(nèi)容、會(huì)員列表、版主列表、版面列表、人氣貼子列表、熱門話題列表; 加工邏輯:注冊(cè)資料修改、發(fā)表貼子、回復(fù)貼子、友情鏈接維護(hù)、發(fā)布公告 、管理版面貼子維護(hù)。 4、超級(jí)會(huì)員與信息處理系統(tǒng)之間 系統(tǒng)的輸入數(shù)據(jù)流:注冊(cè)資料修改、發(fā)表貼子、回復(fù)貼子、友情鏈接維護(hù)、添加版面、論壇基本信息維護(hù)、論壇所有貼子維護(hù)、版主申請(qǐng)批復(fù); 系統(tǒng)的輸出數(shù)據(jù)流:某篇貼子內(nèi)容、會(huì)員列表、版主列表、版面列表、人氣貼子列表、熱門話題列表; 加工邏輯:注冊(cè)資料修改、發(fā)表貼子、回復(fù)貼子、友情鏈接維護(hù)、添加版面、論壇基本信息維護(hù)、論壇所有貼子維護(hù)、版主申請(qǐng)批復(fù)。 第五章 系統(tǒng)主要功能詳細(xì)設(shè)計(jì) 5 1 模塊的設(shè)計(jì) 基于 WEB的通用 BBS系統(tǒng)其系統(tǒng)定義部分采用面對(duì)對(duì)象的系統(tǒng)分析方 法,并結(jié)合傳統(tǒng)的結(jié)構(gòu)化分析方化,設(shè)計(jì)出其系統(tǒng)模型,如果采用面向?qū)ο蟮某绦蛟O(shè)計(jì)語言開發(fā)系統(tǒng),則可以很方便地從系統(tǒng)分析階段平滑地過渡到設(shè)計(jì)階段。但是,本系統(tǒng)采用 ASP 技術(shù), ASP 不支持繼承和強(qiáng)類型轉(zhuǎn)換等面向?qū)ο蟪绦蛟O(shè)計(jì)所必需的功能,只能采用一定的技術(shù)措施,用傳統(tǒng)的結(jié)構(gòu)型程序設(shè)計(jì)方式實(shí)現(xiàn)諸如繼承等這類功能。下面就部分模塊實(shí)現(xiàn)做一下簡要說明: 1系統(tǒng)主頁面 Main.asp 這是 BBS 網(wǎng)站的 HomePage,程序首先進(jìn)行用戶身份判斷。 論壇的用戶身份信息經(jīng)登錄后保存在 SESSION 對(duì)象的 USERNAME 和 ADMINBOARD 兩個(gè)變量里。匿名用戶(既 Guest)這兩個(gè)變量為空或沒有定義;普通用戶 USERNAME 變量有用戶在論壇注冊(cè)的會(huì)員昵稱,但其 ADMINBOARD 變量沒有定義或?yàn)榭?;版主用戶?ADMINBOARD 變量保存有他管理版面的 ID;如果 ADMINBOARD 變量為 “0”則為超級(jí)會(huì)員。 依據(jù)程序?qū)τ脩羲龅呐袛?,插入相?yīng)用戶的功能操作菜單。這就實(shí)現(xiàn)了不同層次對(duì)象的同一方法的不同功能。譬如 Guest:main.asp 載入的功能菜單為 genhead.asp,Super:main.asp 載入的功能菜 單則為superhead.asp。注意:功能菜單文件其實(shí)就是普通的 HTML 文件,按照各自所屬的操作對(duì)象列示其相應(yīng)的功能鏈接。 2. 各級(jí)別用戶私有功能的實(shí)現(xiàn)方法 私有功能是不能為比其級(jí)別高的用戶所繼承的功能。因此,私有功能 ASP 網(wǎng)頁應(yīng)進(jìn)行具體某個(gè)級(jí)別身份的識(shí)別,非這個(gè)級(jí)別層次的用戶則被拒絕訪問。 3. 各級(jí)別用戶公有功能的實(shí)現(xiàn)方法 公有功能是可以為比其級(jí)別高的用戶所繼承的功能。因此,公有功能 ASP 網(wǎng)頁只進(jìn)行比其級(jí)別低的用戶身份的識(shí)別,如果此用戶級(jí)別低則拒絕繼續(xù)訪問。此外,高級(jí)別的用戶可以進(jìn)行功能重載,譬如, 匿名用戶只能查看論壇會(huì)員列表,但是,超級(jí)會(huì)員在查看的同時(shí),還可以進(jìn)行管理操作,如修改,刪除等。下面是所有公用功能的重載列表: Guest:useradmin.asp 查看本論壇注冊(cè)會(huì)員列表; Super:useradmin.asp 查看并管理本論壇注冊(cè)會(huì)員列表; Guest:adminorlist.asp 查看本論壇版主列表; Super:adminorlist.asp 查看并管理本論壇版主列表; Adminor:articleadmin.asp 自已管理轄版面范圍內(nèi)的貼子維護(hù); Super:articleadmin.asp 本論壇所有版面貼子維護(hù); Adminor:linkadmin.asp 添加或維護(hù)自已曾添加的友情鏈接; Super:linkadmin.asp 維護(hù)所有友情鏈接列表; Adminor:newpost.asp 在自已管理版面發(fā)布公告; Super:newpost.asp 在任一版面發(fā)布公告; 4. 會(huì)員用戶積分的計(jì)算模型 會(huì)員用戶每提交一篇文章,可以積十分?;貜?fù)某篇文章,則可以積五分,同時(shí)原文作者積三分。 5. 版主申請(qǐng)條件以及計(jì)算模型 版主申請(qǐng)條件:為正式注冊(cè)會(huì)員;一 個(gè)會(huì)員最多管理二個(gè)版面;一個(gè)版面最多五個(gè)管理員。 計(jì)算機(jī)模型:用戶提出申請(qǐng),超級(jí)用戶審批。審批完成前此會(huì)員不能再次就同一版面申請(qǐng)版主權(quán)限。 6超文本信息輸入 具有普通會(huì)員身份以上級(jí)別的用戶,發(fā)表貼子或回復(fù)貼子時(shí),可以在其貼子內(nèi)插入諸如滾動(dòng)文字,字體大小顏色不同的文字,以及超鏈接等等。系統(tǒng)接受用戶輸入時(shí)對(duì)帶格式文本應(yīng)進(jìn)行相應(yīng)的編碼 (Encode),系統(tǒng)顯示帶超文本信息的貼子時(shí)則應(yīng)進(jìn)行相應(yīng)的解碼 (Decode)。 5 2 ASP網(wǎng)頁數(shù)據(jù)庫的連接 網(wǎng)頁數(shù)據(jù)庫的連接方法有兩種,一種是 DSN 數(shù)據(jù)源,另一種是 DSN-less 方式,即不建立 DSN 連接數(shù)據(jù)??紤]最簡單的 BBS 系統(tǒng)應(yīng)用環(huán)境,使用互聯(lián)網(wǎng)上免費(fèi)資源,通常互聯(lián)網(wǎng)上免費(fèi)主頁空間只支持簡單的 ASP 應(yīng)用以及 Access 數(shù)據(jù)庫應(yīng)用, Access 數(shù)據(jù)庫通常要求放置在固定的虛擬目錄位置,譬如: db目錄位置,數(shù)據(jù)庫的連接也只支持 DSN-less 方式,這也是自然的。另外, BBS 通常只作為 Web 應(yīng)用的一部分,或者說作為個(gè)人主頁或商業(yè)網(wǎng)站提供的一個(gè)附加功能,這個(gè)時(shí)候, BBS 論壇系統(tǒng)通常都安裝在主頁空間一個(gè)單獨(dú)的目錄下,假定為 BSS。 所有要進(jìn)行數(shù)據(jù)庫存取的 ASP 網(wǎng)頁都要以 DSN-less 方式進(jìn)行數(shù)據(jù)庫連接,由此可以將執(zhí)行數(shù)據(jù)庫連接的ASP 代碼單獨(dú)形成一個(gè)插入文件,通常插入文件都是以 .inc作為擴(kuò)展名,考慮到安全性的需要,防止用戶直接輸入文件名下載此插入文件,所以仍然以 .asp作為插入文件的擴(kuò)展名,比如,將一個(gè)用作數(shù)據(jù)讀操作的數(shù)據(jù)庫連接插入文件名命名為 dbconr.asp,下面就是其典型代碼: 數(shù)據(jù)庫連接操作是一個(gè)相當(dāng)頻繁的操作,可以采用適當(dāng)?shù)募夹g(shù)來進(jìn)行數(shù)據(jù)庫連接優(yōu)化,以提高數(shù)據(jù)庫連接性能。在 ASP 的數(shù)據(jù)庫編程中, connection 對(duì)象是不可能離開的一個(gè)對(duì)象,在對(duì)數(shù)據(jù)庫進(jìn)行任何的操作,比如更新記錄,插入,刪除,檢 索等,都必須借助于 connection 對(duì)象來完成。形象地來說, connection對(duì)象就是程序與數(shù)據(jù)庫溝通的管道,所有對(duì)數(shù)據(jù)庫的操作,都必須經(jīng)過它,因此,無論以何種方式連接數(shù)據(jù)庫前,總是少不了執(zhí)行下列的代碼: Set objDBConn=Server.CreateObject(ADODB.Connection)。 建立一個(gè) connection 對(duì)象的實(shí)例變量,然后才能在它的基礎(chǔ)上建立 recordset 對(duì)象或是 command 對(duì)象來操作數(shù)據(jù)庫。既然 connection 對(duì)象是如此的重要,那么如何優(yōu)化和管理好 connection 對(duì)象對(duì)數(shù)據(jù)庫程序來說是極其重要的,它關(guān)系到程序的性能。 每當(dāng)一個(gè)客戶執(zhí)行數(shù)據(jù)庫操作時(shí),就需要借助一個(gè) connection 對(duì)象,而每個(gè) connection 對(duì)象就會(huì)占用服務(wù)器的一部分資源,而數(shù)據(jù)庫的同時(shí)連接數(shù)不可能是無限的,因此。在考濾要提供高性能的數(shù)據(jù)庫 Web程序時(shí),需要考慮如何去減少服務(wù)器的開銷。一般來說。每個(gè) ASP 頁面中建立一個(gè) conn ection 對(duì)象,都會(huì)在服務(wù)器中產(chǎn)生一個(gè)對(duì)數(shù)據(jù)庫的連接。而不同的頁面的 connection 對(duì)象是不能共享的。那么??刹豢梢允雇粋€(gè)用戶所訪問的不同頁面共享 一個(gè) connection 連接通道呢。 回顧一下 ASP 六大內(nèi)置對(duì)象的 session 對(duì)象,它可以為某個(gè)特定的用戶來保存私有的數(shù)據(jù),如果把 connection 對(duì)象保存在 session 對(duì)象中,是否可以使不同的 ASP 頁面都使用同一個(gè)連接通道呢?看看下面的這段程序。 在這個(gè)數(shù)據(jù)庫連接中,使用了 session 對(duì)象,首先,建立一個(gè) objDBConn 的連接對(duì)象,然后連接到數(shù)據(jù)表 userlist 中,取得連接句柄后,把它保存在 session(dbconn)這個(gè) session 變量中,在打開記錄集前,從 session(dbconn)中取出句柄,借助于 session 對(duì)象。可以使不同的 ASP 頁面共用一個(gè)連接對(duì)象,減少了對(duì)服務(wù)器內(nèi)存的開銷,而也不需要擔(dān)心,當(dāng)一個(gè)客戶因?yàn)殄e(cuò)誤操作導(dǎo)致服務(wù)器不能釋放該被占用的 session 連接對(duì)象,因?yàn)槊總€(gè)客戶的 session 對(duì)象是有一定的生存期限的,過了這個(gè)期限,服務(wù)器就會(huì)自動(dòng)把它釋放掉。 然而,數(shù)據(jù)庫連接性能的提高是以一定的服務(wù)器資源消耗為代價(jià)的,所以,就要在其中權(quán)衡利弊。通常,利用別人的主機(jī)空間來作為自已 BBS 系統(tǒng)的平臺(tái),就應(yīng)該盡諒避免使用過多的 服務(wù)器資源,諸如 APPLICATION 以及 SESSION 變量,反之,主機(jī)資源豐富,而應(yīng)用系統(tǒng)相對(duì)較少,則可以考慮采用上述優(yōu)化方式。 5 3 ASP網(wǎng)頁數(shù)據(jù)庫的操作 關(guān)于網(wǎng)頁數(shù)據(jù)庫的操作, ASP 擁有三種方法: ADO 組件的 Connection 對(duì)象配合 SQL 語法; ADO 組件的 Command 對(duì)象執(zhí)行 SQL 語法;使用 ADO 組件的 RecordSet。每種方法各有特點(diǎn)。 1、 ADO 組件 Connection 對(duì)象配合 SQL 語法 在網(wǎng)頁上使用 SQL 指令處理數(shù)據(jù)的訪問,需要使用 ADO 組件的 Connection 對(duì)象建立數(shù)據(jù)連接,以 便讓下達(dá) SQL 指令到服務(wù)器端的數(shù)據(jù)庫,處理表中的記錄。參照 ASP 網(wǎng)頁數(shù)據(jù)庫的連接所介紹的方法,首先建立一個(gè) Connection 對(duì)象;然后再打開 DSN-less,同時(shí),根據(jù)將要進(jìn)行數(shù)據(jù)操作的類型,設(shè)置其Mode 屬性;最后,使用 Connection 對(duì)象的 Execute 方法下達(dá) SQL 指令,通常在使用 Execute 方法執(zhí)行 SQL 指令前,應(yīng)該指定其 CommandTimeOut 屬性。以會(huì)員注冊(cè)為例,用戶填寫完注冊(cè)資料以后,提交系統(tǒng),系統(tǒng)進(jìn)行用戶資料插入操作: 這是最基本的數(shù)據(jù)庫操作 方式,特別是對(duì)于表的插入、刪除和更新記錄以及單條數(shù)據(jù)的查詢操作,是三種方式中最為簡單有效的一種。設(shè)計(jì)開發(fā)的 BBS 論壇中,用戶身份驗(yàn)證、發(fā)表貼子以及回復(fù)貼子等相關(guān)數(shù)據(jù)庫操作相當(dāng)頻繁,對(duì)數(shù)據(jù)存取效率有相當(dāng)?shù)囊?,至于在?shù)據(jù)存取的靈活性方面要求不高,因此,大部分都是采取 ADO 組件 Connection 對(duì)象配合 SQL 語法這種數(shù)據(jù)庫操作方式。 2、 ADO 組件的 Command 對(duì)象執(zhí)行 SQL 語法 Command 對(duì)象和 Connection 對(duì)象的 Execute 方法一樣能夠執(zhí)行 SQL 指令。在建立 Command 對(duì)象前一樣需要建立和 打開數(shù)據(jù)連接,假設(shè)活動(dòng)連接 objDBConn 已經(jīng)建立好,其后步驟如下所示: Step1:建立 Command 對(duì)象,其程序代碼如下: Set objDBCommand=Sever.CreateObject(“ADODB.Command”); Step2:接著指定 ActiveConnection 屬性為目前打開的數(shù)據(jù)連接,代碼如下: ObjDBCommand.AvtiveConnection=objDBConn; Step3:指定 CommandText 屬性為要執(zhí)行的 SQL 指令,程序代碼如下: ObjDBCommand.CommandText=“Select * from userlist”; Step4:使用 Execute 方法執(zhí)行 SQL 指令, objRS 就是取得的記錄集合,代碼如下: Set objRS=objDBCommand.Execute; 上述步驟可以取得所有注冊(cè)會(huì)員的詳細(xì)注冊(cè)資料,至于添加、刪除和更新記錄只需下達(dá)不同的 SQL 指令。需要注意的是, Command 對(duì)象并不支持 Close 方法,所以關(guān)閉 Command 對(duì)象,只需設(shè)為 Nothing 即可。 建立復(fù)雜的 SQL 語句,通常得事先進(jìn)行許多復(fù)雜的數(shù)據(jù)類型轉(zhuǎn)換,使用 Command 對(duì)象配合 Parameters 數(shù)據(jù)集合建立 SQL 指令則相對(duì)來說比較簡單,因?yàn)閷?duì)象本身就能夠自已處理復(fù)雜的數(shù)據(jù)類型轉(zhuǎn)換,另外,比較 Connection 對(duì)象直接執(zhí)行 SQL 語句來說,操作要靈活。 Command 對(duì)象主要的目的是用在存儲(chǔ)程序( Store Procedure),簡單地說,存儲(chǔ)程序是一些默認(rèn)的處理程序。這個(gè)部分需用要數(shù)據(jù)源本身擁有指令處理的能力,象 MS SQL Server 就支持存儲(chǔ)程序,但 MS Access 這類中小型數(shù)據(jù)庫系統(tǒng)就不支持存儲(chǔ)程序。 應(yīng)該說,使用存儲(chǔ)程序來操作數(shù)據(jù)庫,具有較其它方式 較明顯的優(yōu)點(diǎn),首先,數(shù)據(jù)存取效率最高,因?yàn)榇鎯?chǔ)過程經(jīng)過了優(yōu)化和編譯,并且在第一次執(zhí)行以后,就駐留在緩存中,另外,用戶不必在網(wǎng)絡(luò)上發(fā)送有時(shí)數(shù)以百計(jì)的 SQL 語句,只需通過執(zhí)行一個(gè)簡單的存儲(chǔ)過程,就能夠完成復(fù)雜的操作,減少了客戶和 DB 服務(wù)器間傳遞的請(qǐng)求數(shù)目,減少了網(wǎng)絡(luò)通信量。 設(shè)計(jì)開發(fā)的 BBS 論壇采用 MS Access 數(shù)據(jù)庫,所以本方法作為未來系統(tǒng)擴(kuò)展升級(jí)時(shí)數(shù)據(jù)庫操作的首選方法。 3、使用 ADO 組件的 RecordSet RecordSet 對(duì)象為 ADO 組件最重要的對(duì)象,從英文名字看來就是 “記錄集合 ”。它將表全部或部 分的記錄內(nèi)容,象使用容器一樣暫放所需的記錄, RecordSet 對(duì)象能夠顯示表的內(nèi)容或進(jìn)行記錄數(shù)據(jù)的分析處理。 數(shù)據(jù)的目的是在訪問、建立和處理記錄,表的內(nèi)容是由記錄所組成。當(dāng)在表中查詢所需的數(shù)據(jù)時(shí),其實(shí)就是在表的記錄間尋找, RecordSet 對(duì)象的記錄集合可以把所需的記錄取出,使用表格的方式,每一行就是一條記錄,提供 ASP 程序一致的數(shù)據(jù)處理方式。 數(shù)據(jù)本身其實(shí)就是一個(gè)虛擬的表格,為什么一定要將它取出放入 RecordSet 對(duì)象容器,然后再進(jìn)行處理呢?這是因?yàn)?ADO 組件數(shù)據(jù)源不見得就是數(shù)據(jù)庫表,它可能是一個(gè)文本文 件,而且所需的數(shù)據(jù)可能只有幾筆,并不需要打開整個(gè)表提供全部的記錄。直接在表中處理并沒有效率,不如在 RecordSet 記錄集合處理后,再更新表的記錄,反而較有效率。 總之,不論數(shù)據(jù)源到底是什么,通過 RecordSet 對(duì)象的記錄集合,就可以在 ASP 程序使用一致的方法處理數(shù)據(jù),不論是文本文件、 Excel 還是數(shù)據(jù)庫,它都是一個(gè)表格的記錄集合。 在使用 ADO 組件的 RecordSet 對(duì)象時(shí),因?yàn)樘幚淼膶?duì)象是記錄集合,不是表的記錄本身,所以,如果記錄改變了,一定在用 Update 方法更新表,才能真正修改表的記錄內(nèi)容。 在數(shù) 據(jù)的查詢方面, RecordSet 對(duì)象的使用相當(dāng)靈活,雖然 RecordSet 對(duì)象一樣可以插入、更新和刪除記錄,此時(shí)直接使用 SQL 指令反而較有效率。例如:只是插入一條記錄,為什么需要建立 RecordSet 對(duì)象的記錄集合,然后再更新記錄?這在實(shí)際操作時(shí),反而多此一舉。但是,如果是從表中提取記錄集合,然后要對(duì)記錄進(jìn)行相對(duì)較為復(fù)雜的分組分頁顯示,則使用 RecordSet 對(duì)象來操作數(shù)據(jù)比起 SQL 方式來要簡單得多。論壇中象會(huì)員列表查詢或是版主列表查詢都采用 ADO 組件的 RecordSet 數(shù)據(jù)操作方式。 5 4 ASP網(wǎng)頁安 全性的實(shí)現(xiàn)方法 在用瀏覽器瀏覽 HTML 網(wǎng)頁時(shí),瀏覽器會(huì)將 HTML 文件原封不動(dòng)地全部下載下來,然后再由瀏覽器解釋執(zhí)行,因而很容易就能看到 HTML 文件的全部源代碼,這對(duì)于那些含有保密內(nèi)容的網(wǎng)頁來說是十分不安全的。為了提高網(wǎng)頁的安全性,采用了 ASP 網(wǎng)頁,前面說過, ASP 網(wǎng)頁是一種動(dòng)態(tài)網(wǎng)頁,它是由服務(wù)器中的 ASP 程序運(yùn)行產(chǎn)生的動(dòng)態(tài)頁面,而 ASP 的源代碼又是全部保存在服務(wù)器上的,所以從客戶端的角度, ASP 源代碼是保密的。所以,可以利用 ASP 網(wǎng)頁 ASP 源代碼的保密性來實(shí)現(xiàn) ASP 網(wǎng)頁只能被具有相應(yīng)權(quán)限的合法用戶訪問。 本 BBS 論壇系統(tǒng)有會(huì)員身份權(quán)限限制的功能網(wǎng)頁相當(dāng)多,頻繁地要求用戶輸入用戶名以及密碼,然后比較數(shù)據(jù)庫中會(huì)員注冊(cè)表數(shù)據(jù)以確認(rèn)用戶身份,再根據(jù)用戶的身份來確定是否具有本網(wǎng)頁的訪問權(quán),將會(huì)消耗大量的服務(wù)器資源,極大地增加 Web 服務(wù)器的負(fù)擔(dān)。此時(shí),可以利用 ASP 的內(nèi)置對(duì)象 Session。 當(dāng)一位尚未建立 Session 對(duì)象的用戶瀏覽到 WEB 站點(diǎn)的 ASP 程序時(shí), ASP 就會(huì)自動(dòng)產(chǎn)生一個(gè)新的 Session 對(duì)象,并且指定唯一的 SessionID 編號(hào)。此后,在瀏覽此 ASP 程序和即將在站點(diǎn)內(nèi)瀏覽其它 ASP 程序的過程,稱為一個(gè) Session 期間。 WEB 服務(wù)器可以憑借讀取 ASP 程序時(shí)傳送的 SessionID 判斷用戶是否仍在 Session 期間,直到 Session 對(duì)象 TimeOut 屬性所設(shè)置的時(shí)間,默認(rèn)為 20 分鐘或執(zhí)行 Abandon 方法。每當(dāng)讀取新的 ASP 程序后, TimeOut 屬性都會(huì)歸零,重新計(jì)算,所以除非沒有瀏覽站點(diǎn),否則 Session 期間絕對(duì)超過 20 分鐘。 每一位用戶都可以擁有一組專用的 Session 變量。雖然每位用戶的 Session 變量名稱相同,但是其內(nèi)容可就不同,而且只有該用戶擁有權(quán)利讀寫自已的 Session 變量,可以利用 Session 的這個(gè)特性來實(shí)現(xiàn) ASP 網(wǎng)頁的安全保護(hù)。 在論壇設(shè)計(jì)了一個(gè) ASP 網(wǎng)頁 userlog.asp,如果用戶想以普通會(huì)員的身份發(fā)表貼子,或以版主身份管理版面,或以超級(jí)管理員身份進(jìn)行論壇管理,則用戶在進(jìn)入系統(tǒng)之前必須通過 userlogin.asp 進(jìn)行登錄, login.asp 會(huì)將用戶輸入的用戶名及密碼拿來與數(shù)據(jù)庫中的資料相對(duì)比,以確定用戶的合適身份,否則,用戶只能以匿名用戶身份瀏覽本論壇貼子,卻不能發(fā)表貼子或回復(fù)貼子,當(dāng)然更不能進(jìn)行論壇的相關(guān)管理操作了。用戶的身份將被寫入 Session 對(duì)象的 username 以及 adminboard 變量, username 保存其會(huì)員名稱, adminboard 保存其操作權(quán)限,為 “0”則其為超級(jí)會(huì)員,為空則為普通會(huì)員, 1 為版面 ID 則為版主。 userlog.asp 部分核心源代碼如下: % Write Log objRS.close strSQL=INSERT INTO loginfo(userid,userip,intime) strSQL=strSQL & VALUES( & strUserName & , strSQL=strSQL & request.servervariables(remote_host) & , strSQL=strSQL & now() & ) set objRS=objDBConn.execute(strSQL) if err.number0 then response.write 數(shù)據(jù)庫操作失敗: &err.description end if end if objRS.close objDBConn.Close Set objRS=Nothing Set objDBConn=Nothing % 確定了用戶的會(huì)員身份以后,在每個(gè)需要進(jìn)行身份識(shí)別的 ASP 網(wǎng)頁插入身份識(shí)別代碼,如果此用戶具有訪問這個(gè) ASP 網(wǎng)頁的權(quán)限,則輸出其相應(yīng)的 HTML 文件,否則,系統(tǒng)轉(zhuǎn)到用戶登錄網(wǎng)頁要求用戶重新登錄以取得訪問此 ASP 功能網(wǎng)頁的合法身份。例如,論壇基本信息設(shè)置 ASP 網(wǎng)頁需要訪問者具有超級(jí)會(huì)員身份,在本網(wǎng)頁前必須插入以下一段代碼: % Check the Super Administrator Right Response.Expires=0 if Session(adminboard) 0 Then Response.redirect userlog.asp?errmsg=您沒有超級(jí)用戶管理權(quán)限,請(qǐng)重新登錄或退出 ! End If % 5 5 在貼子中實(shí)現(xiàn)超文本信息輸入和顯示 論壇可以由管理員設(shè)置是否支持 UBB 標(biāo)簽, UBB 標(biāo)簽就是不允許使用 HTML 語法的情況下,通過論壇的特殊轉(zhuǎn)換程序,以至可以支持少量常用的、無危害性的 HTML 效果顯示。而對(duì)于那類帶有惡意代碼的文本予以屏蔽。下面為設(shè)計(jì)開發(fā)的 BBS 論壇支持的 UBB 具體使用說明: B文字 /B:在文字的位置可以任意加入您需要的字符,顯示為粗體效果明。 I文字 /I:在文字的位置可以任意加入您需要的字符,顯示為斜體效果。 U文字 /U:在文字的位置可以任意加入您需要的字符,顯示為下劃線效果。 URLHTTP://URL 。 EMAILsch_/EMAIL 。 img/img:在標(biāo)簽的中間插入圖 片地址可以實(shí)現(xiàn)插圖效果。 flashFlash 連接地址 /Flash:在標(biāo)簽的中間插入 Flash 圖片地址可以實(shí)現(xiàn)插入 Flash。 code文字 /code:在標(biāo)簽中寫入文字可實(shí)現(xiàn) html 中編號(hào)效果。 quote引用 /quote:在標(biāo)簽的中間插入文字可以實(shí)現(xiàn) HTMl 中引用文字效果。 list文字 /list list=a文字 /list list=1文字 /list:更改 list 屬性標(biāo)簽,實(shí)現(xiàn) HTML 目錄效果。 fly文字 /fly:在標(biāo)簽的中間插入文字可以實(shí) 現(xiàn)文字飛翔效果,類似跑馬燈。 move文字 /move:在標(biāo)簽的中間插入文字可以實(shí)現(xiàn)文字移動(dòng)效果,為來回飄動(dòng)。 color=顏色代碼 文字 /color:輸入您的顏色代碼,在標(biāo)簽的中間插入文字可以實(shí)現(xiàn)文字顏色改變。 size=數(shù)字 文字 /size:輸入您的字體大小,在標(biāo)簽的中間插入文字可以實(shí)現(xiàn)文字大小改變。 face=字體 文字 /face:輸入您需要的字體,在標(biāo)簽的中間插入文字可以實(shí)現(xiàn)文字字體轉(zhuǎn)換。 DIR=500,350http:/DIR:為插入 shockwave 格式文 件,中間的數(shù)字為寬度和長度。 RM=500,350http:/RM:為插入 realplayer 格式的 rm 文件,中間的數(shù)字為寬度和長度 。 MP=500,350http:/MP:為插入為 midia player 格式的文件,中間的數(shù)字為寬度和長度 。 QT=500,350http:/QT:為插入為 Quick time 格式的文件,中間的數(shù)字為寬度和長度 。 URL=HTTP:/網(wǎng)易 /URL:有兩種方法可以加入超級(jí)連接,可以連接具體地址或者文字連接 。 align=center文字 /align:在文字的位置可以任意加入您需要的字符, center 位置 center 表示居中,left 表示居左, right 表示居右。 EMAIL=MAILTO:sch_feng/EMAIL:有兩種方法可以加入郵件連接,可以連接具體地址或者文字連接。 glow=255,red,2文字 /glow:在標(biāo)簽的中間插入文字可以實(shí)現(xiàn)文字發(fā)光特效 ,glow 內(nèi)屬性依次為寬度、顏色和邊界大小。 shadow=255,red,2文字 /shadow:在標(biāo)簽的中間插入文字可以實(shí)現(xiàn)文字陰影特效, shadow 內(nèi)屬性依次為寬度、顏色和邊界大小。 1、超文本信息的輸入 用戶在書寫貼子內(nèi)容時(shí),可以輸入這類帶格式文本,例如,用戶希望輸入一段紅色文字 “警告:大家注意了,我在灌水 ”,則應(yīng)照這種格式輸入文本 “color=red警告:大家注意了,我在灌水 /color”。系統(tǒng)在用戶輸入貼子界面應(yīng)提供 UBB 使用幫助鏈接,對(duì)于一些常用的 UBB 標(biāo)簽,系統(tǒng)應(yīng)提供其快捷輸入方式。例如,界面提供一個(gè)輸入飛行文字 UBB 標(biāo)簽快捷按鈕,用戶單擊此按鈕,系統(tǒng)則彈出一個(gè)文本輸入框 ,用戶在其中輸入文字,完成提交后,系統(tǒng)將自動(dòng)在貼子內(nèi)容輸入滾動(dòng)文本框內(nèi)文字的末尾添加帶有飛行文本標(biāo)簽的這段文字。其實(shí)現(xiàn)代碼如下(采用 JavaScript 編寫): function fontchuli() if (document.selection)&(document.selection.type = Text) var range = document.selection.createRange(); var ch_text=range.text; range.text = fontbegin + ch_text + fontend; else document.kbbs.body.value=fontbegin+document.kbbs.body.value+fontend; document.kbbs.body.focus(); function fly() fontbegin=fly; fontend=/fly; fontchuli(); 功能按鈕: 文本在提交后,系統(tǒng)在保存此貼子之前,應(yīng)該將提交的貼子的標(biāo)題、貼子內(nèi)容作適當(dāng)?shù)霓D(zhuǎn)換,比如,用戶輸入的 等字符,應(yīng)該轉(zhuǎn)換成 HTML 非保留字符。采用 Server 對(duì)象的 HTMLEncode 方法。 假設(shè)貼子的標(biāo)題以及內(nèi)容分別被存放在 title 以及 body 這兩個(gè)變量里,轉(zhuǎn)換代碼如下: title=Server.HTMLEncode(title) body=Server.HTMLEncode(body) 2、超文本信息的顯示 保存在數(shù)據(jù)庫貼子數(shù)據(jù)表中的相關(guān)貼子標(biāo)題以及內(nèi)容的數(shù)據(jù),是經(jīng)過了 HTMLEncode 方法處理過的數(shù)據(jù),而且數(shù)據(jù)中包含了大量的 UBB 標(biāo)簽,在顯示貼子之前,應(yīng)該將那些 UBB 標(biāo)簽作適當(dāng)轉(zhuǎn)換,以使用戶瀏覽器能對(duì)其進(jìn)行正確解釋。 RegExp 提供簡單的正則表達(dá)式支持功能,它包括一系列的屬性和方法,用于從一段文本中進(jìn)行正則表 達(dá)式模式匹配,找出或用一段文字替代與之相匹配的文本。 在 VBScript 對(duì)象包含三個(gè)屬性以及支持三個(gè)方法,下面分別說明如下: I、 Global 屬性 設(shè)置或返回一個(gè) Boolean 值,該值指明在整個(gè)搜索字符串時(shí)模式是全部匹配還是只匹配第一個(gè)。使用語法: object.Global = True | False , object 參數(shù)總是 RegExp 對(duì)象。如果搜索應(yīng)用于整個(gè)字符串,Global 屬性的值為 True,否則其值為 False。默認(rèn)的設(shè)置為 True。 II、 IgnoreCase 屬性 設(shè)置或返 回一個(gè) Boolean 值,指明模式搜索是否區(qū)分大小寫。使用語法: object.IgnoreCase = True | False 。 object 參數(shù)總是一個(gè) RegExp 對(duì)象。如果搜索是區(qū)分大小寫的,則 IgnoreCase 屬性為 False;否則為 True。缺省值為 True。 III、 Pattern 屬性 這是正則表達(dá)式對(duì)象最重要的一個(gè)屬性,設(shè)置或返回被搜索的正則表達(dá)式模式。使用語法: object.Pattern = searchstring。正則表達(dá)式對(duì)象將根據(jù)其正則表達(dá)式進(jìn)行相應(yīng)的模 式匹配。 VI、 Replace 方法 替換在正則表達(dá)式查找中找到的文本。使用語法為: object.Replace(string1, string2)。 Replace 方法的語法包含以下幾個(gè)部分: object 是必需,總是一個(gè) RegExp 對(duì)象的名稱; string1 是必需的, string1 是將要進(jìn)行文本替換的字符串; string2 是必需的, string2 是替換文本字符串。被替換的文本的實(shí)際模式是通過 RegExp 對(duì)象的 Pattern 屬性設(shè)置的。 Replace 方法返回 string1 的副本,其中的 RegExp.Pattern 文本已經(jīng)被替換為 string2。如果沒有找到匹配的文本,將返回原來

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(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)論