基于PHPMySQL技術(shù)S論壇畢業(yè)設(shè)計報告論_第1頁
基于PHPMySQL技術(shù)S論壇畢業(yè)設(shè)計報告論_第2頁
基于PHPMySQL技術(shù)S論壇畢業(yè)設(shè)計報告論_第3頁
基于PHPMySQL技術(shù)S論壇畢業(yè)設(shè)計報告論_第4頁
基于PHPMySQL技術(shù)S論壇畢業(yè)設(shè)計報告論_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

公司內(nèi)部檔案編碼:[OPPTR-OPPT28-OPPTL98-OPPNN08]公司內(nèi)部檔案編碼:[OPPTR-OPPT28-OPPTL98-OPPNN08]基于PHPMySQL技術(shù)S論壇畢業(yè)設(shè)計報告論信息商務(wù)學(xué)院Web數(shù)據(jù)庫應(yīng)用課程大作業(yè)基于php和mysql技術(shù)BBS論壇設(shè)計報告院(系)別商學(xué)系專業(yè)信息管理與信息系統(tǒng)班級信管131學(xué)號姓名蔣誠指導(dǎo)教師董智勇二○一六年十一月目錄TOC\o"1-3"\h\u1引言 32系統(tǒng)分析 4需求分析 4可行性分析 43系統(tǒng)設(shè)計 6系統(tǒng)目標(biāo) 6系統(tǒng)功能模塊設(shè)計 7登錄注冊模塊 7發(fā)帖回帖模塊 8編輯刪除模塊 8搜索模塊 8版面管理模塊 8普通管理模塊 9會員管理模塊 9數(shù)據(jù)庫設(shè)計 104系統(tǒng)的實現(xiàn) 15通用類實現(xiàn) 15連接數(shù)據(jù)庫文件 15數(shù)據(jù)庫操作類 16前臺模塊的實現(xiàn) 22論壇主頁 22注冊登錄模塊 23發(fā)帖回帖模塊 23編輯刪除帖子模塊 25搜索帖子模塊 26后臺管理模塊的實現(xiàn) 27版面管理 27.2普通管理 28會員管理模塊 285結(jié)論 29基于php和mysql技術(shù)BBS論壇設(shè)計報告1引言隨著Internet技術(shù)的快速發(fā)展,人與人之間的交流方式逐漸增多。網(wǎng)絡(luò)視頻、網(wǎng)絡(luò)聊天、博客已成為人們彼此溝通、交流信息的主要方式。此外,為了方便在某一專業(yè)領(lǐng)域探討問題和發(fā)表意見,Internet上還出現(xiàn)了在線論壇。在論壇上,人會根據(jù)自己的學(xué)識、經(jīng)驗發(fā)表意見或提出解決問題的方法。通過論壇系統(tǒng)可以隨時獲得各種最新信息;也可以通過論壇系統(tǒng)與別人討論計算機軟件、硬件、Internet、多媒體、程序設(shè)計以及生物學(xué)、醫(yī)學(xué)等各種有趣的話題;還可以利用論壇系統(tǒng)來發(fā)布征友、廉價轉(zhuǎn)讓、招聘人才、求職應(yīng)聘等啟事;更可以召集親朋好友到聊天室內(nèi)高談闊論……并且現(xiàn)在很多商務(wù)網(wǎng)站開始對論壇重視了起來,紛紛在自己的網(wǎng)站上開設(shè)論壇,作為與網(wǎng)民交流的空間,以此來吸引客戶,服務(wù)客戶。由此可見,論壇系統(tǒng)是一種非常必要的系統(tǒng)。在這個數(shù)字化時代,全世界有千千萬萬個網(wǎng)站晝夜不停地提供服務(wù)。PHP+MySQL這一對Web應(yīng)用開發(fā)的利器,在從電子商務(wù)到網(wǎng)絡(luò)辦公,從郵件服務(wù)到大型綜合網(wǎng)站的廣泛應(yīng)用,都顯示了其強大的功能。目前網(wǎng)上的網(wǎng)頁有靜態(tài)網(wǎng)頁和動態(tài)網(wǎng)頁兩種形式。靜態(tài)網(wǎng)頁不能自動更新,更新只能通過重新編寫HTML頁來實現(xiàn),所以靜態(tài)網(wǎng)頁的制作和維護的工作量相當(dāng)大。它的內(nèi)容也不會因用戶、瀏覽時間的變化而隨之變化,所以實現(xiàn)人機交互有相當(dāng)大的局限性,功能上有太多的限制。而動態(tài)網(wǎng)頁的實現(xiàn)與靜態(tài)網(wǎng)頁不同,它由客戶端向服務(wù)器提出申請,服務(wù)器根據(jù)用戶請求,把動態(tài)網(wǎng)頁內(nèi)部的代碼在服務(wù)器端進行相應(yīng)的處理,再把結(jié)果發(fā)回客戶端。因此,動態(tài)網(wǎng)頁有以下特點:客戶端看到的不是源文件,本身不用任何處理;不同用戶、不同時間、不同地點瀏覽同一個網(wǎng)頁返回的結(jié)果可以不同;動態(tài)網(wǎng)頁只有經(jīng)過用戶瀏覽時才會返回一個完整的網(wǎng)頁,而其本身并不是一個獨立的網(wǎng)頁文件;動態(tài)網(wǎng)頁構(gòu)建的網(wǎng)站維護起來比較容易,只需更新數(shù)據(jù)庫內(nèi)容即可。PHP本身就是一種編程語言,它是吸收了C、Java等語言的綜合優(yōu)勢而創(chuàng)建開發(fā)的一種新語言。這是它與JSP、ASP的基本不同之處。PHP能夠被Apache、IIS等多種服務(wù)器支持,而ASP只能被Windows系統(tǒng)下的IIS、PWS所支持。PHP能夠很好的運行于Linux、UNIX、Windows、FreeBSD等多種操作系統(tǒng)上,ASP只能運行于Windows系統(tǒng)上,雖然JSP也能在多種系統(tǒng)下得到支持,但是必須以有Java虛擬機為前提。2系統(tǒng)分析需求分析BBS系統(tǒng)的目的提供的是一個交流平臺,為廣大愛好者提供交流經(jīng)驗,探討問題的社區(qū)。因此,BBS最基本的功能首先是發(fā)表主題。其次是其他人員根據(jù)主題發(fā)表自己的看法。此外,為了記錄主題的發(fā)表者和主題的回復(fù)者的信息,系統(tǒng)還需要提供用戶注冊和登錄的功能。用戶使用論壇有一定的流程:用戶登錄進入論壇(一般為游客,有時還要注冊為會員),就某個話題(帖子的主題)展開討論,通過發(fā)帖功能發(fā)布新的話題,通過回帖功能回復(fù)已有的話題,通過搜索功能查找已有的話題。管理員通過管理功能創(chuàng)建、編輯、刪除論壇的版塊,管理注冊的用戶,管理帖子等。只有注冊的用戶登錄后才能發(fā)表和回復(fù)主題,瀏覽者(游客)只能瀏覽主題信息。根據(jù)用戶的需求及上面的分析,BBS應(yīng)該具備以下功能:顯示各論壇類別及版面,查看版面下的所有根帖、查看自己發(fā)表的帖子、搜索帖子、查看根帖內(nèi)容、用戶注冊、用戶登錄、發(fā)表帖子、回復(fù)帖子、進入后臺、論壇類別管理、版面管理、用戶管理和用戶注冊。可行性分析這里主要介紹技術(shù)可行性。該BBS的設(shè)計主要采用PHP、XML、MySQL、Dreamweaver8、Eclipse等技術(shù)和工具,整體設(shè)計采用軟件工程的技術(shù)和方法,經(jīng)過需求分析、總體設(shè)計、文檔和代碼的編制、模塊測試和系統(tǒng)實現(xiàn)幾個階段。下面對這幾種技術(shù)分別介紹。PHP技術(shù)PHP是一種服務(wù)器端、跨平臺、HTML嵌入式的腳本語言。服務(wù)器端執(zhí)行說明它是動態(tài)網(wǎng)頁的一種,跨平臺說明它可以同時運行在Linux、UNIX或者Windows上。另外還可以簡單地嵌入到普通的HTML頁中。PHP與ASP、JSP相比,它有多種服務(wù)器支持,也支持運行在多種操作系統(tǒng)上,另外PHP本身就是一種面向?qū)ο蟮木幊陶Z言。它同時支持MySQL、Oracle、Sybase、ODBC等多種數(shù)據(jù)庫。MySQL數(shù)據(jù)庫MySQL是當(dāng)前最流行的開放源代碼數(shù)據(jù)庫,它具有跨平臺,獨立存儲引擎、高級權(quán)限與安全系統(tǒng)、查詢高速緩存、全文索引與檢索等特性。MySQL是一個高性能、多線程、多用戶、建立在客戶-服務(wù)器結(jié)構(gòu)上的RDBMS,專為速度和穩(wěn)定性而設(shè)計。作為一個可靠的、富有特色的數(shù)據(jù)庫系統(tǒng),MySQL已經(jīng)在商業(yè)、教育、科學(xué)和工程領(lǐng)域得到應(yīng)用。并且它的低成本/高性能的價值表現(xiàn)也吸引了更多用戶。B/S三層結(jié)構(gòu)在B/S系統(tǒng)中,用戶可以通過瀏覽器向分布在網(wǎng)絡(luò)上的服務(wù)器發(fā)出請求,B/S結(jié)構(gòu)極大地簡化了客戶機的工作,客戶機只要安裝、配置少量的客戶端軟件即可,服務(wù)器將擔(dān)負更多的工作,對數(shù)據(jù)庫的訪問和應(yīng)用程序的執(zhí)行將在服務(wù)器上完成。在B/S三層體系結(jié)構(gòu)下,表示層、功能層、數(shù)據(jù)層被割成三個相對獨立的單元。第一層(表示層)Web瀏覽器:在表示層中包含系統(tǒng)的顯示邏輯,位于客戶端。它的任務(wù)是由Web瀏覽器向網(wǎng)絡(luò)上的某一Web服務(wù)器提出服務(wù)請求,Web服務(wù)器對用戶身份進行驗證后通過HTTP協(xié)議將數(shù)據(jù)傳送給客戶端,客戶機接受傳來的網(wǎng)頁文件,并將其顯示到Web瀏覽器中。第二層(功能層)具有應(yīng)用程序擴展功能的Web服務(wù)器:在功能層中包含系統(tǒng)的事物的處理邏輯,位于服務(wù)器端。它的任務(wù)是接受用戶的請求,首先需要執(zhí)行相應(yīng)的擴展應(yīng)用程序與數(shù)據(jù)庫進行連接,通過SQL等方式向數(shù)據(jù)庫服務(wù)器提出數(shù)據(jù)處理申請,等數(shù)據(jù)庫服務(wù)器將處理結(jié)果提交給Web服務(wù)器后,再由Web服務(wù)器傳回客戶端。第三層(數(shù)據(jù)層):數(shù)據(jù)庫服務(wù)器:在數(shù)據(jù)層中包含數(shù)據(jù)處理邏輯,位于數(shù)據(jù)庫服務(wù)器端。它的任務(wù)是接受Web對數(shù)據(jù)庫操作的請求,實現(xiàn)對數(shù)據(jù)庫查詢、修改、更新等功能,把運行結(jié)果提交給Web服務(wù)器。在B/S結(jié)構(gòu)下,整個系統(tǒng)的管理、資源分配、數(shù)據(jù)庫操作、業(yè)務(wù)邏輯部件的管理及動態(tài)加載等工作都集中于應(yīng)用服務(wù)器。同時,由于工作集中,可以降低客戶機的管理難度及客戶機配置。僅僅提高應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器的品質(zhì),就可以提高整個系統(tǒng)的運行效率,從而有效地降低了應(yīng)用系統(tǒng)的部署與管理的難度。XML工作原理XML全稱為可擴展的標(biāo)志語言,類似于HTML語言。XML作為描述信息的語言保存數(shù)據(jù),可以使用XSL或CSS來格式化這些數(shù)據(jù),使之以某種形式顯示在瀏覽器上。還可以通過解釋器用編程的方法載入一個XML文檔,再通過XMLDOM(XML文檔對象模型)訪問、更新、創(chuàng)建和操縱該XML文檔的信息3系統(tǒng)設(shè)計系統(tǒng)目標(biāo)對于典型的數(shù)據(jù)庫管理系統(tǒng),尤其是對論壇這樣數(shù)據(jù)流量特別大的網(wǎng)絡(luò)管理系統(tǒng)、必須要滿足使用方便、操作靈活等設(shè)計需求。本系統(tǒng)在設(shè)計時應(yīng)滿足一下幾個目標(biāo):采用人機對話的操作方式,界面設(shè)計美觀友好,信息查看靈活方便、快捷準確。數(shù)據(jù)存儲安全可靠。全面展示系統(tǒng)內(nèi)所有分類的帖子,并進行分別顯示。為用戶提供一個方便快捷的主題信息查看功能。實現(xiàn)在線發(fā)表帖子、回復(fù)帖子的功能。提供登錄模塊,主要用于管理員登錄系統(tǒng)和發(fā)表帖子時留下發(fā)表者的信息。用戶隨時都可以查看自己發(fā)表的帖子。對于用戶輸入的數(shù)據(jù),要進行嚴格的檢驗,盡可能排除人為的錯誤。系統(tǒng)最大限度的實現(xiàn)易維護性和易操作性。系統(tǒng)運行穩(wěn)定、安全可靠。系統(tǒng)功能模塊設(shè)計按照論壇系統(tǒng)的功能可以將本系統(tǒng)分為前臺和后臺兩大模塊。用戶在前臺注冊、登錄,以及編輯個人的注冊信息組成登錄注冊模塊;用戶瀏覽版塊、瀏覽主題帖列表、查看帖子以及按條件搜索組成搜索模塊;用戶發(fā)帖、回帖組成發(fā)帖回帖模塊;用戶編輯、刪除帖子組成編輯刪除模塊。以上四個模塊是前臺模塊。后臺模塊都是與管理員相關(guān)的,其中管理員將管理選項、權(quán)限設(shè)置、刪帖管理設(shè)置為版面管理模塊;將備份數(shù)據(jù)庫、配置選項、文字過濾、表情符號和恢復(fù)數(shù)據(jù)庫設(shè)置為普通管理模塊;將版面的整體風(fēng)格設(shè)置為風(fēng)格管理模塊,有新建、添加、輸出和管理幾個方面;將封鎖管理、禁用賬號、權(quán)限設(shè)定和等級管理設(shè)置為會員管理模塊。后臺模塊也分為四個。如圖所示。論壇系統(tǒng)論壇系統(tǒng)前臺模塊后臺模塊登錄注冊模塊發(fā)帖回帖模塊編輯刪除模塊搜索模塊版面管理模塊普通管理模塊會員管理模塊風(fēng)格管理模塊下面具體介紹各個模塊的功能登錄注冊模塊登錄模塊包括以下的幾個部分。登錄:一般網(wǎng)站都具有的功能,提供會員登錄到論壇窗口的功能。注冊:提供游客成為會員的功能,這樣可以享受更多的權(quán)限。游客只能瀏覽帖子,而會員不僅可以瀏覽帖子,還可以回復(fù)和發(fā)表帖子。編輯會員信息:當(dāng)注冊的用戶用其注冊時使用的用戶名和密碼登錄論壇系統(tǒng)后,可以對其注冊時填寫的資料進行編輯更改。發(fā)帖回帖模塊包括以下幾個部分。發(fā)帖:論壇的基本功能之一。會員可以就某個感興趣的話題發(fā)表自己的看法,即發(fā)帖?;靥赫搲幕竟δ苤弧T可以答復(fù)其他人提出的問題、看法等,即回帖。編輯刪除模塊包括:編輯,會員可以對自己發(fā)表過的帖子進行重新編輯修改;刪除,會員當(dāng)然可以刪除自己發(fā)表的帖子。搜索模塊包括:按關(guān)鍵字搜索,搜索功能的一種,按照帖子相關(guān)的內(nèi)容關(guān)鍵字搜索;按作者名搜索,可以直接搜索其他某個會員發(fā)表的帖子。版面管理模塊包括以下幾個部分。管理選項:在管理選項中,管理員可以分別對版面和分區(qū)進行編輯。管理員可以對版面進行添加、編輯、刪除和移動操作,還可以對分區(qū)進行添加、編輯、刪除和移動操作。(一個論壇可以分成許多分區(qū),一個分區(qū)又有許多版面,一個版面還可以分成許多主題。)權(quán)限設(shè)定:在權(quán)限設(shè)定中,管理員可以設(shè)置訪問分區(qū)或版面的權(quán)限,權(quán)限有公開、注冊會員、注冊會員隱藏、非公開、非公開隱藏、長老、長老隱藏。刪帖管理:在刪帖管理中,管理員可以計劃刪除幾天內(nèi)沒有得到回復(fù)的主題。(假設(shè)在10天內(nèi)某個主題還沒有回復(fù),系統(tǒng)則自動刪除此主題,管理員只需要設(shè)置天數(shù)就可以了。)普通管理模塊包括以下幾個部分。備份數(shù)據(jù)庫:管理員可以對本系統(tǒng)的所有資料數(shù)據(jù)進行備份,以防數(shù)據(jù)的丟失。備份分完整備份、結(jié)構(gòu)備份和數(shù)據(jù)備份?;謴?fù)數(shù)據(jù)庫:在系統(tǒng)遭到攻擊崩潰時,可以使用恢復(fù)數(shù)據(jù)庫功能對系統(tǒng)的數(shù)據(jù)重新回復(fù)。文字過濾:在這個控制面板里管理員可以建立、編輯及刪除過濾文字。這些指定的文字將會被過濾并以替換文字顯示。另外會員也將無法使用含有這些被限定文字的名稱來注冊。配置選項:在這個控制面板里管理員可以對面板的基本內(nèi)容進行設(shè)置,還可以進行Cookies設(shè)置、會員設(shè)置和私人留言設(shè)置等。群體信件:在這個控制面板里管理員可以發(fā)送電子郵件給所有的會員。表情符號:這個控制面板中管理員可以對發(fā)帖、回帖時使用到的表情符號進行編輯或刪除操作。會員管理模塊包括以下幾個部分。封鎖管理:這個控制面板中管理員可以對會員的信息進行封鎖,比如說可以封鎖一個指定的會員,一個指定范圍內(nèi)的IP地址或計算機主機名稱,這些方法禁止被封鎖的會員進入論壇首頁。也可以指定封鎖電子郵件地址來防止注冊會員使用不同的賬號重復(fù)注冊。管理選項:在這個控制面板中管理員可以變更會員的個人資料以及現(xiàn)存的特殊選項。禁用賬號:在這個控制面板中管理員可以控制禁用會員的賬號名稱,但是已經(jīng)注冊的賬號是無法禁用的。權(quán)限設(shè)定:在這個控制面板中管理員可以更改會員的權(quán)限設(shè)定及指定管理員資格。等級管理:在這個控制面板中管理員可以增加、編輯、瀏覽以及刪除等級,也可以使用等級應(yīng)用于會員管理功能。數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫設(shè)計在項目開發(fā)中是非常重要的一個環(huán)節(jié),它影響著后期的系統(tǒng)維護、變更和擴充,甚至在整個系統(tǒng)開發(fā)中,都會引起很大的問題。本論壇系統(tǒng)后臺數(shù)據(jù)庫采用的是,數(shù)據(jù)庫名稱為db-bbs,根據(jù)系統(tǒng)的功能需求,本系統(tǒng)設(shè)置了11張表,主要的幾張表如下。1phpbb_forums表該表保存了論壇的基本信息,如論壇編號、論壇名稱、論壇說明、論壇帖子數(shù)等。如表1:表1:phpbb_forums表字段名類型長度允許為空是否主鍵描述forum_idsmallint5否是論壇編號cat_idmediumint8否否討論區(qū)編號forum_namevarchar150是否版面名稱forum_desctext/是否論壇說明forum_statustinyint4否否論壇狀態(tài)forum_ordermediumint8否否論壇順序forum_postsmediumint8否否論壇帖子數(shù)forum_topicsmediumint8否否論壇主題數(shù)forum_last_post_idmediumint8否否最后一個帖子號auth_viewtinyint2否否查看權(quán)限auth_readtinyint2否否閱讀權(quán)限auth_posttinyint2否否發(fā)帖權(quán)限auth_replytinyint2否否回帖權(quán)限auth_edittinyint2否否編輯權(quán)限auth_deletetinyint2否否刪除權(quán)限auth_stickytinyint2否否粘貼權(quán)限auth_votetinyint2否否投票權(quán)限auth_pollcreatetinyint2否否創(chuàng)建投票權(quán)限auth_attachmentstinyint2否否附件權(quán)限2phpbb_topics表該表保存了論壇中主題的基本信息,如主題編號、主題名稱、主題答復(fù)等。各字段信息如表2:表2:phpbb_topics表字段名類型長度允許為空是否主鍵描述topic_idmediumint8否否主題編號forum_idsmallint8否否論壇編號topic_titlechar60否否主題名稱topic_postermediumint8否否主題帖子topic_timeint11否否主題發(fā)表時間topic_repliesmediumint8否否主題回復(fù)數(shù)topic_statustinyint3否否主題狀態(tài)topic_votetinyint1否否是否投票topic_typetinyint3否否主題類型topic_first_post_idmediumint8否否主題首帖編號topic_last_post_idmediumint8否否主題末帖編號topic_moved_idmediumint8否否主題移動編號3phpbb_users表該表保存了注冊會員的基本信息,包括用戶名、密碼、E-mail等個人信息。各字段信息如表3:表3:phpbb_users表字段名類型長度允許空主鍵描述user_idmediumint8否是用戶編號user_activetinyint11是否用戶活動性user_namevarchar25否否用戶名user_passwordvarchar32否否用戶密碼user_lastvisitint11否否用戶上次登錄user_regdateint11否否用戶注冊日期user_leveltinyint4是否用戶等級user_postsmediumint8否否用戶帖子數(shù)user_styletinyint4是否用戶風(fēng)格user_langvarchar255是否用戶個性簽名user_unread_privmsgsmallint5否否未讀私密信件user_last_privmsgint11否否上一私密信件user_login_triessmallint5否否嘗試登錄次數(shù)user_emailtimeint11是否信件時間user_viewemailtinyint1是否查看郵件user_attachsigtinyint1是否附加個性簽名user_allowsmiletinyint1是否允許加入表情user_allowavatartinyint1否否允許具體描述user_allow_pmtinyint1否否允許私有郵件user_notifytinyint1否否回帖通知user_notify_pmtinyint1否否私有郵件通知user_rankint11是否用戶分類user_avatarvarchar100是否用戶具體描述user_emailvarchar255是否用戶Emailuser_icqvarchar15是否用戶IQCuser_websitevarchar100是否用戶網(wǎng)站user_fromvarchar100是否用戶來自user_sigtext/是否用戶簽名user_aimvarchar255是否用戶現(xiàn)居地user_msnmvarchar255是否用戶msnuser_interrestsvarchar255是否用戶興趣user_actkeyvarchar32是否用戶職業(yè)4phpbb_categories表該表保存了討論區(qū)的基本信息,比如討論區(qū)的編號、名稱等。各字段信息具體如表4:表4:phpbb_categories表字段名類型長度允許為空是否主鍵描述cat_idmediumint8否是討論區(qū)編號cat_titlevarchar100否否討論區(qū)標(biāo)題cat_ordermediumint8否否討論去順序5phpbb_posts表該表保存了所有帖子的主要信息,包括帖子號、發(fā)帖者編號、發(fā)表時間等,如表5。表5:phpbb_posts表字段名類型長度允許為空是否主鍵描述post_idmediumint8否是帖子編號topic_idmediumint8否否主題編號forum_idsmallint5否否論壇編號poster_idmediumint8否否發(fā)帖者編號post_timeint11否否發(fā)表時間poster_ipchar8否否發(fā)帖者IPenable_smiliestinyint1否否允許使用表情enable_sigtinyint1否否允許使用簽名post_edit_timeint11是否帖子編輯時間post_edit_countsmallint5否否帖子編輯次數(shù)6phpbb_posts_text表該表保存了所有的帖子,包括發(fā)帖和回帖的名稱和內(nèi)容。各字段的具體內(nèi)容如表6:表6:phpbb_post_text表字段名類型長度允許為空是否主鍵描述post_idmediumint8否是帖子編號post_subjectchar60是否帖子名稱post_texttext/是否帖子內(nèi)容7phpbb_themes表該表保存了系統(tǒng)的顯示風(fēng)格設(shè)置,如背景顏色、文字樣式、字體顏色等。各字段內(nèi)容如表7:表7:phpbb_themes表字段名類型長度允許為空是否主鍵描述themes_idmediumint8否是主題編號style_namevarchar30否否風(fēng)格名稱body_backgroundvarchar100是否body背景圖片body_bgcolorvarchar6是否Body背景色body_textvarchar6是否Body文本body_linkvarchar6是否正常鏈接顏色body_vlinkvarchar6是否已點擊鏈接色body_alinkvarchar6是否鼠標(biāo)按下鏈接色body_hlinkvarchar6是否鼠標(biāo)移過鏈接色tr_color1varchar6是否行顏色1tr_color2varchar6是否行顏色2tr_color3varchar6是否行顏色3th_color1varchar6是否表格頭顏色1th_color2varchar6是否表格頭顏色2th_color3varchar6是否表格頭顏色3td_color1varchar6是否列顏色1td_color2varchar6是否列顏色2td_color3varchar6是否列顏色3fontsize1tinyint4是否字體大小1fontsize2tinyint4是否字體大小2fontsize3tinyint4是否字體大小3fontcolor1varchar6是否字體顏色1fontcolor2varchar6是否字體顏色2fontcolor3varchar6是否字體顏色34系統(tǒng)的實現(xiàn)通用類實現(xiàn)為了使代碼能夠重復(fù)利用,實現(xiàn)代碼的重用性,可以把一些常用的功能代碼單獨寫在一個文件內(nèi),如連接數(shù)據(jù)庫代碼,頭部和尾部文件等。在使用時可以用include關(guān)鍵字把這些代碼包含到文件中,可以減少代碼的重復(fù)。連接數(shù)據(jù)庫文件文件即為連接數(shù)據(jù)庫的文件,該文件被放在includes目錄下。代碼如下:<<php'db/mysql.'.$phpEx);//連接數(shù)據(jù)庫服務(wù)器,建立數(shù)據(jù)庫連接對象$db=newsql_db($dbhost,$dbuser,$dbpasswd,$dbname,false);//如果連接失敗則提示錯誤信息if(!$db->db_connect_id){ message_die(CRITICAL_ERROR,"不能連接數(shù)據(jù)庫!");}>以上代碼執(zhí)行的步驟如下所示:應(yīng)用“if(!defined(‘IN_PHPBB’))”語句判斷是否定義常量,如果沒有定義則提示錯誤信息應(yīng)用“swith($dbms)”語句獲取用戶使用的數(shù)據(jù)庫名稱,不同的數(shù)據(jù)庫包含不同的數(shù)據(jù)庫操作文件應(yīng)用“$db=newsql_db($dbhost,$dbuser,$dbpassword,$dbname,false)”語句建立一個數(shù)據(jù)庫連接對象。判斷數(shù)據(jù)庫是否連接成功,如果連接失敗,則提示“不能連接數(shù)據(jù)庫”。數(shù)據(jù)庫操作類整個類的定義在文件中,類的定義及其屬性的定義如下所示:<<phpif(!defined("SQL_LAYER")){//定義常量define("SQL_LAYER","mysql");//創(chuàng)建一個sql_db類classsql_db{ //定義屬性 var$db_connect_id; var$query_result; var$row=array(); var$rowset=array(); var$num_queries=0; //省略函數(shù)代碼}}>在以上代碼中,首先判斷是否定義常量,如果沒有定義,則使用define()函數(shù)定義常量。然后,定義一個名為sql_db的類,也為該類定義了多個屬性。同時,在sql_db類中定義多個方法,在其中定義了一個選擇數(shù)據(jù)庫的函數(shù)sql_db()。如下所示://選擇數(shù)據(jù)庫//選擇數(shù)據(jù)庫functionsql_db($sqlserver,$sqluser,$sqlpassword,$database,$persistency=true) { //設(shè)置屬性的值 $this->persistency=$persistency; $this->user=$sqluser; $this->password=$sqlpassword; $this->server=$sqlserver; $this->dbname=$database; if($this->persistency) { //連接MySQL服務(wù)器 $this->db_connect_id=@mysql_pconnect($this->server,$this->user,$this->password); } else { $this->db_connect_id=@mysql_connect($this->server,$this->user,$this->password); } if($this->db_connect_id) { //判斷數(shù)據(jù)庫名是否為空if($database!=""){//獲取數(shù)據(jù)庫的名稱$this->dbname=$database; //選擇數(shù)據(jù)庫$dbselect=@mysql_select_db($this->dbname); //如果沒有選擇到數(shù)據(jù)庫 if(!$dbselect) { //關(guān)閉數(shù)據(jù)庫 @mysql_close($this->db_connect_id); $this->db_connect_id=$dbselect; } } return$this->db_connect_id; } else { returnfalse; } }以上代碼的執(zhí)行的步驟如下所示:設(shè)置使用的數(shù)據(jù)庫、數(shù)據(jù)庫服務(wù)器、用戶名和密碼的值等。分別使用mysql_pconnect()函數(shù)和mysql_connect()函數(shù)連接MySQL數(shù)據(jù)庫服務(wù)器。其中,mysql_pconnect()函數(shù)用于打開一個到MySQL服務(wù)器的持久連接,而mysql_connect()函數(shù)用于打開一個到MySQL服務(wù)器的連接。應(yīng)用“$dbselect=@mysql_select_db($this->dbname)”語句選擇服務(wù)器上的數(shù)據(jù)庫。應(yīng)用“if(!dbselect)”語句判斷是否選擇數(shù)據(jù)庫,如果沒有選擇數(shù)據(jù)庫,則調(diào)用mysql_close()函數(shù)關(guān)閉數(shù)據(jù)庫連接。另外中還定義了一個關(guān)閉數(shù)據(jù)庫的函數(shù),函數(shù)名為sql_close(),該函數(shù)的具體執(zhí)行操作為:應(yīng)用“if($this->db_connect_id)”語句判斷是否連接了數(shù)據(jù)庫服務(wù)器,如果連接了,則使用@mysql_free_result()函數(shù)釋放連接到服務(wù)器的所有空間。調(diào)用@mysql_close()函數(shù)關(guān)閉數(shù)據(jù)庫連接,如果關(guān)閉成功,則應(yīng)用“return$result”語句返回關(guān)閉的結(jié)果,如果關(guān)閉失敗,則返回false。以下代碼定義了執(zhí)行SQL語句的函數(shù),函數(shù)名為sql_query()。//SQL語句執(zhí)行函數(shù)//SQL語句執(zhí)行函數(shù)functionsql_query($query="",$transaction=FALSE){//釋放內(nèi)存unset($this->query_result);//判斷語句是否為空if($query!=""){$this->num_queries++;//獲取執(zhí)行結(jié)果$this->query_result=@mysql_query($query,$this->db_connect_id);}if($this->query_result){//如果存在查詢結(jié)果,則釋放內(nèi)存unset($this->row[$this->query_result]);unset($this->rowset[$this->query_result]);//返回query_result執(zhí)行結(jié)果return$this->query_result;}else{return($transaction==END_TRANSACTION)true:false;}}以上代碼執(zhí)行過程如下:應(yīng)用“unset($this->query_result)”語句釋放內(nèi)存空間;應(yīng)用“if($query!="")”語句判斷執(zhí)行的字符串是否為空,如果不為空,則調(diào)用@mysql_query函數(shù)執(zhí)行SQL語句。在中還定義了一個獲取數(shù)據(jù)集的行的函數(shù),函數(shù)名為sql_numrows()。主要是通過應(yīng)用“$query_id=$this->query_result;”語句獲取執(zhí)行SQL語句的結(jié)果;根據(jù)執(zhí)行SQL語句的結(jié)果,調(diào)用@mysql_num_rows()函數(shù)獲取數(shù)據(jù)集的行。中也定義了對數(shù)據(jù)字段操作的函數(shù),如下:functionsql_affectedrows()functionsql_numfields($query_id=0)functionsql_fieldname($offset,$query_id=0)functionsql_fieldtype($offset,$query_id=0)functionsql_fetchrow($query_id=0)以上各個函數(shù)的功能和該功能的具體實現(xiàn)如下所示:在sql_affectedrows()函數(shù)中,主要通過@mysql_affected_rows()函數(shù)獲區(qū)前一次MySQL操作所影響的記錄行數(shù)。在sql_numfields()函數(shù)中,主要通過@mysql_num_fields()函數(shù)獲取數(shù)據(jù)集中字段的數(shù)目。在sql_fieldname()函數(shù)中,主要通過@mysql_field_name()函數(shù)獲取結(jié)果集中指定字段的字段名。在sql_fieldtype()函數(shù)中,主要通過@mysql_field_type()函數(shù)獲得指定字段的類型。在sql_fetchrow()函數(shù)中,主要通過@mysql_fetch_array()函數(shù)從結(jié)果集中取得一行作為關(guān)聯(lián)數(shù)組。另外,中還有兩個函數(shù),sql_freeresult()函數(shù)和sql_error()函數(shù),主要是用于釋放變量空間和當(dāng)程序?qū)?shù)據(jù)庫操作出現(xiàn)錯誤時,提示出錯信息。如下:functionsql_freeresult($query_id=0)functionsql_error($query_id=0)這兩個函數(shù)的具體功能和該功能的具體實現(xiàn)方法為:在sql_freeresult()函數(shù)中,主要通過@mysql_free_result()釋放指定變量的空間,如果釋放成功則返回為true,釋放失敗,則返回false;在sql_error()函數(shù)中,主要通過@mysql_error()函數(shù)返回執(zhí)行SQL語句產(chǎn)生的錯誤信息。前臺模塊的實現(xiàn)論壇主頁論壇首頁自上而下可以分為3個部分,最上面的是導(dǎo)航部分,中間是論壇的主要部分即版塊列表,最下面是用戶及論壇的一些情況。如圖1其中最上面和最下面的部分基本上是不會發(fā)生變化的,所以把它們做成公用的文件,然后使用包含語句將其包含到要使用的頁面中。包含文件使用的include指令為<%phpincludefile="filename"%>圖1首頁使用include關(guān)鍵字包含了多個文件,分別是、和文件等。這些文件中:應(yīng)用“$total_posts=get_db_stat('postcount');”語句獲取總帖子數(shù)。應(yīng)用“$total_users=get_db_stat('usercount');”來獲取注冊會員數(shù)。應(yīng)用“$newest_userdata=get_db_stat('newestuser');”獲取最新注冊會員數(shù)。如果帖子總數(shù)為0,則顯示示沒有帖子。注冊登錄模塊在用戶注冊模塊主要由3部分組成,分別是注冊信息、個人信息和選項,其中注冊信息是必須填的,其它兩項是可選項。在用戶提交信息之后,系統(tǒng)要驗證輸入信息是否合法,具體包括必選項是否有空白、Email格式是否正確、兩次密碼是否一致、用戶名是否已經(jīng)存在、Email是否已經(jīng)使用過等。這些信息的驗證分別通過sql_query()函數(shù)(執(zhí)行查詢操作)、preg_match()函數(shù)(驗證Email格式是否合格)等。用戶輸入信息無誤后,應(yīng)用insert關(guān)鍵字,定義一個插入用戶信息的字符串,通過執(zhí)行插入語句,插入記錄。用戶登錄時,通過應(yīng)用$username=isset($HTTP_POST_VARS['username'])語句和$password=isset($HTTP_POST_VARS['password'])語句來獲得輸入的用戶名和密碼,通過查詢比較決定是否允許用戶登錄。用戶更新信息是通過用戶的ID號查詢到用戶的信息,并且顯示到文本框中,用戶修改完成之后,再執(zhí)行更新操作。找回密碼,通過驗證用戶名和Email是否為空,如果不空根據(jù)這兩項通過調(diào)用sql_query()函數(shù)執(zhí)行查尋用戶信息操作。然后根據(jù)用戶的ID號定義更新用戶密碼的字符串,同時調(diào)用sql_query()函數(shù)執(zhí)行更新操作。更新之后會應(yīng)用“$emailer=newemailer($board_config['smtp_delivery'])”語句對emailer類進行實例化,再調(diào)用emailer類中的send()函數(shù)將用戶的密碼發(fā)送到用戶填寫的E-mail里。發(fā)帖回帖模塊論壇最重要的部分就是帖子模塊,發(fā)帖和回帖模塊和用戶注冊有些類似,但可以看到用戶發(fā)帖頁面的功能很多,用戶可以投票,可以選擇頭像,還可以進行文字格式的編輯等。(如圖2)發(fā)表新帖首先進入到mode=newtopic頁面,其中mewtopic表示發(fā)送新的帖子,當(dāng)填完發(fā)帖的內(nèi)容后,單擊發(fā)送按鈕提交,提交處理仍為文件,判斷輸入的數(shù)據(jù)是否合法,然后調(diào)用文件中的submit_post()函數(shù)進行處理。圖2具體的執(zhí)行步驟如下:應(yīng)用“$subject=htmlspecialchars()”語句獲取發(fā)送新帖的主題,并且應(yīng)用“if(!empty($subject))”語句判斷獲取帖子的主題是否為空。應(yīng)用if語句判斷用戶是發(fā)送新帖子還是編輯帖子,如果是發(fā)送新帖,則定義插入新帖的字符串;如果是編輯帖子,則根據(jù)帖子的ID號,定義更新帖子的字符串調(diào)用sql_query()函數(shù)執(zhí)行插入發(fā)送新帖或更新帖子的字符串操作。應(yīng)用“if($mode=='newtopic')”語句判斷用戶是否是發(fā)送新帖,如果是,則調(diào)用sql_nextid()函數(shù)獲取上一步insert操作產(chǎn)生的ID號。投票選項功能的添加、編輯和刪除主要也是由submit_post()函數(shù)實現(xiàn)的。如果用戶在發(fā)送新帖時添加了投票的功能,那么投票的選項必須大于2;編輯和帖子一樣。通過調(diào)用sql_query()函數(shù)執(zhí)行插入和更新投票的操作。其他用戶進行投票時,通過調(diào)用sql_query()函數(shù)從數(shù)據(jù)庫中查詢出該投票的信息,并將查詢結(jié)果保存到提前定義好的數(shù)組中。然后應(yīng)用“if(!$db->sql_query($sql,BEGIN_TRANSACTION))”語句判斷該用戶對此主題是否是第一次投票,如果是則更新數(shù)據(jù)庫,如果是第二次,則提示用戶“您已經(jīng)投過票了!”?;貜?fù)帖子界面和發(fā)送新帖的界面相比,只是少了一個添加投票功能,其他一樣?;貜?fù)帖子首先進入到mode=reply頁面,其中reply表示回復(fù)帖子。用戶提交回復(fù)之后,提交處理文件仍然是文件,判斷輸入的數(shù)據(jù)是否合法,然后調(diào)用文件中的以下語句對數(shù)據(jù)庫進行插入操作。 POSTS_TEXT_TABLE."(post_id,post_subject,bbcode_uid,post_text)VALUES($post_id, POSTS_TEXT_TABLE."(post_id,post_subject,bbcode_uid,post_text)VALUES($post_id,'$post_subject','$bbcode_uid','$post_message')":"UPDATE".POSTS_TEXT_TABLE."SETpost_text='$post_message',bbcode_uid='$bbcode_uid',post_subject='$post_subject'WHEREpost_id=$post_id";//判斷是否執(zhí)行成功if(!$db->sql_query($sql)){ //錯誤提示 message_die(GENERAL_ERROR,'Errorinposting','',__LINE__,__FILE__,$sql); }編輯刪除帖子模塊編輯帖子和發(fā)貼基本類似,主要調(diào)用了update_post_stats()函數(shù),根據(jù)帖子的ID號,定義更新帖子的字符串,然后執(zhí)行。(如圖3)刪除帖子時首先進入到mode=delete頁面,當(dāng)用戶點擊“是”確認刪除帖子后,調(diào)用文件中的delete_post()函數(shù)進行刪除操作。首先根據(jù)帖子的ID號(post_id),定義刪除帖子的字符串(將帖子的數(shù)碼減1等),并調(diào)用sql_query()函數(shù)執(zhí)行刪除操作。圖3搜索帖子模塊搜索包括論壇搜索、討論區(qū)搜索、顯示結(jié)果搜索等,如圖4圖4搜索頁面通過include關(guān)鍵字包含了4個文件,分別是、、和文件。其中,在文件中,主要包含了用于搜索的多個函數(shù)。通過應(yīng)用“$search_author=str_replace('*','%',trim($search_author))”語句獲取查找字符串出現(xiàn)的位置;再用“if($search_author==''&&$auth_sql=='')”語句判斷搜索條件是否為空,如果為空則定義查找帖子的字符串,并調(diào)用sql_query()函數(shù)至此那個查詢操作,同時將結(jié)果保存到$row數(shù)組中;最后獲取帖子的ID號,保存到$search_ids[]數(shù)組中,并調(diào)用sql_freeresult()函數(shù)釋放內(nèi)存空間。后臺管理模塊的實現(xiàn)后臺管理的主要模塊有:版面管理模塊、普通管理模塊和會員管理模塊等。各個模塊下又有不同的功能。版面管理版面管理下有三個功能:管理選項、權(quán)限管理和刪帖管理。在論壇版面管理的管理選項中,可以

溫馨提示

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

評論

0/150

提交評論