




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