畢業(yè)設(shè)計基于ASP的網(wǎng)絡(luò)聊天室的設(shè)計和實現(xiàn)論文_第1頁
畢業(yè)設(shè)計基于ASP的網(wǎng)絡(luò)聊天室的設(shè)計和實現(xiàn)論文_第2頁
畢業(yè)設(shè)計基于ASP的網(wǎng)絡(luò)聊天室的設(shè)計和實現(xiàn)論文_第3頁
畢業(yè)設(shè)計基于ASP的網(wǎng)絡(luò)聊天室的設(shè)計和實現(xiàn)論文_第4頁
畢業(yè)設(shè)計基于ASP的網(wǎng)絡(luò)聊天室的設(shè)計和實現(xiàn)論文_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、畢業(yè)設(shè)計(論文)基于ASP的網(wǎng)絡(luò)聊天室的設(shè)計和實現(xiàn)論文作者姓名:申請學位專業(yè):申請學位類別:指導教師姓名(職稱):論文提交日期:28 / 32文檔可自由編輯打印基于ASP的網(wǎng)絡(luò)聊天室的設(shè)計與實現(xiàn)摘 要隨著網(wǎng)絡(luò)的逐漸普及,以及網(wǎng)絡(luò)技術(shù)的不段發(fā)展,人們通過網(wǎng)絡(luò)進行交流的方式變得多樣化。網(wǎng)絡(luò)聊天室便是其中之一。聊天室系統(tǒng)的即時交流方式滿足了網(wǎng)絡(luò)中多人同時聊天交流的需要,使得較多的人在同一個聊天頁面進行交流變得方便,簡單。本設(shè)計所完成的網(wǎng)絡(luò)聊天室具有常用聊天室的所有功能,包括多人同時在線聊天、兩人間的私密聊天、在發(fā)言的時候能夠發(fā)送表情及圖片,還能顯示在線用戶列表,同時,為了管理聊天室中的用戶,設(shè)計了用

2、戶注冊登陸功能,用戶管理功能以及用戶留言功能。并且,加入了分屏、清屏、屏蔽的輔助功能,增加了聊天室的操作性。本文首先介紹了聊天室系統(tǒng)所使用到的一些關(guān)鍵技術(shù),接著介紹了該系統(tǒng)的設(shè)計思路和需求分析,然后是對系統(tǒng)的詳細介紹,包括系統(tǒng)中創(chuàng)建的數(shù)據(jù)庫以及系統(tǒng)的具體功能介紹。關(guān)鍵詞:聊天室;B/S模式;私聊;留言The Design and Realization of Chatroom Based on ASPAbstractWith the popularization of the network and development of the network technology, the way

3、which people communicate through a network becomes diversified. The network chat room is one of them. The instant communication of the chat room system has met the need that many people chat at the same time, and people can converse in an easy way on one page.The network chat room in this project ha

4、s all the functions of the common chat room. People can chat with each other at the same time, chat with one people privately and send expressions and pictures when users chat. And show the online user's list. In order to manage the users of the chat room, this system have designed the function

5、of registration, management and leaving word. This system has the assistant functions such as multi-screen, clean-screen and shielding. These functions improve the operability of the chat room . This paper first introduce the key technology of this chat room system, then introduce the main idea and

6、the requirements analysis, the next is the introduction of the system in detail, including the database and specific operations.Key words: the chat room; B/S mode; private chat; leave word 目錄 論文總頁數(shù):22頁1.引言12 技術(shù)簡介12.1 ASP技術(shù) 12.2 數(shù)據(jù)庫技術(shù)22.3 加密技術(shù)23 需求分析33.1系統(tǒng)運行環(huán)境33.2系統(tǒng)總體結(jié)構(gòu)33.3 模塊功能分析44 系統(tǒng)總體設(shè)計54.1 系統(tǒng)總體規(guī)劃

7、54.2 系統(tǒng)數(shù)據(jù)庫設(shè)計54.2.1 數(shù)據(jù)庫概念模型54.2.2 數(shù)據(jù)庫各表設(shè)計64.2.3 數(shù)據(jù)庫連接的實現(xiàn)75 系統(tǒng)功能具體實現(xiàn)75.1 用戶注冊登陸模塊85.1.1 用戶注冊85.1.2 用戶登錄95.2 用戶密碼修改105.3 用戶發(fā)言115.4 聊天內(nèi)容顯示135.5 在線用戶列表顯示165.6 管理功能175.7 輔助功能區(qū)18結(jié)論20參考文獻20致 謝21聲 明221.引言隨著網(wǎng)絡(luò)的逐漸普及,以及網(wǎng)絡(luò)技術(shù)的不段發(fā)展,人們通過網(wǎng)絡(luò)進行交流的方式變得多樣化。網(wǎng)絡(luò)聊天室便是其中之一。在網(wǎng)站建設(shè)迅速發(fā)展的今天,基于B/S模式的ASP網(wǎng)絡(luò)聊天室已經(jīng)成為較多網(wǎng)民認可的一種聊天交流平臺,各種專

8、家座談、在線答疑室,實質(zhì)就是聊天室。聊天室系統(tǒng)的即時交流方式滿足了網(wǎng)絡(luò)中多人同時聊天交流的需要,使得較多的人在同一個聊天頁面進行交流變得方便,簡單。本聊天室的開發(fā)目的就是為人們在網(wǎng)絡(luò)中提供一個即時的網(wǎng)頁交流平臺,通過這個平臺,人們可以隨意發(fā)言和觀看大家發(fā)言的內(nèi)容。其中的一大特點就是聊天室中的用戶可以選擇發(fā)言的對象,進行一對一的私聊,別人是無法看到兩人間對話的內(nèi)容的。本系統(tǒng)開發(fā)采用B/S(瀏覽器/服務(wù)器)結(jié)構(gòu),參考網(wǎng)絡(luò)中正在使用的大型聊天室的架構(gòu)、分析聊天室可實現(xiàn)功能,結(jié)合本次設(shè)計的相關(guān)要求,進行開發(fā)設(shè)計并寫出需求分析說明書。具體開發(fā)環(huán)境:使用windows2003作為服務(wù)器運行平臺,同時搭建系

9、統(tǒng)運行平臺IIS、DNS域名服務(wù)器;以ASP語言作為開發(fā)語言,主要研究HTML、JAVA SCRIPT、VB SCRIPT以及SQL數(shù)據(jù)庫語言;后臺數(shù)據(jù)庫使用SQL SERVER或系統(tǒng)自帶的ACCESS數(shù)據(jù)庫;開發(fā)工具包括DREAMAVER、PHOTOSHOP、IE、SQL SERVER等。2 技術(shù)簡介2.1 ASP技術(shù)ASP技術(shù)是一種類似HTML(Hypertext Markup Language超文本標識語言)、Script與CGI(Common Gateway Interface通用網(wǎng)關(guān)接口)的結(jié)合體,簡單的講它是一種運行于服務(wù)器的腳本語言,但是其運行效率比CGI更高、程序編制也比HTM

10、L更方便且更有靈活性,程序安全性及保密性也遠比Script好。其特點歸納如下:1. ASP可以和HTML或其他腳本語言(VB Script與Java Script)互相嵌套。2. ASP是一種在Web服務(wù)器端運行的腳本語言,因此,程序代碼完全保密。3. ASP以對象為基礎(chǔ),因此可以使用ActiveX控件繼續(xù)擴充其功能。4. ASP內(nèi)置ADO組件,因此可以輕松地存取各種數(shù)據(jù)庫,大大縮短了程序開發(fā)時間。5. ASP可以將運行結(jié)果以HTML的格式傳送至客戶端瀏覽器,因此ASP可以適用于各種瀏覽器。下面來介紹一下ASP的幾個內(nèi)置對象:Request對象,我們知道HTTP通訊協(xié)議是一種請求與響應(yīng)(Req

11、uest/Response)的通訊協(xié)議,因此通常由客戶端向Web服務(wù)器提出請求,Web服務(wù)器才會響應(yīng)信息。因此在ASP中,特別將“客戶端提出的要求”與“Web服務(wù)器響應(yīng)的信息”等動作封裝成Request對象與Response對象。換而言之,Request對象通常包含了用戶端的相關(guān)信息,如瀏覽器的種類、表頭信息、表單參數(shù)及cookies等等。Response對象,每一種程序語言或開發(fā)工具一定都有與用戶溝通的界面或函數(shù),ASP也不例外。在ASP中負責將信息傳達到用戶的對象就是Response對象。Server對象,Server對象允許用戶取得服務(wù)器提供的各項功能,例如,Server對象的Creat

12、eObject方法允許客戶端用戶建立一個ActiveX Server組件實例,其所建立組件實例會隨著服務(wù)器端完成ASP網(wǎng)頁的處理而自動被釋放。如果希望此對象實例可以跨多個ASP網(wǎng)頁,就要用到Session對象保留該組件實例,直到Session對象的運行時間到了,或是在其他ASP網(wǎng)頁調(diào)用Session對象的Abandon方法,此組件實例才會被釋放。Session對象,Session對象在ASP程序編寫中占了相當重的份量,由于網(wǎng)頁是一種無狀態(tài)的程序,因此幾乎無法知道用戶的瀏覽狀態(tài)。必須通過Session對象記錄用戶的相關(guān)信息,以供用戶再次對此Web服務(wù)器提出要求時作確認,例如,在某些特定的網(wǎng)頁中,

13、常需要用戶輸入確認的賬號和密碼,假如這些身份確認的結(jié)果無法保留,那豈不是每一個網(wǎng)頁都需要重新輸入一次密碼。換而言之,每一個Session的用戶,Web服務(wù)器均會自動的為它們建立一個Session。必須說明,Session對象只能適用于具備Cookie功能的瀏覽器。2.2 數(shù)據(jù)庫技術(shù)在基于微軟IIS/PWS的網(wǎng)絡(luò)平臺上,通過服務(wù)器端運行的ASP程序來訪問后臺數(shù)據(jù)庫,是一種最常見的模式了。而對于小型的數(shù)據(jù)庫應(yīng)用需求,微軟的Access數(shù)據(jù)庫應(yīng)該是與ASP程序配套使用的首選。由于Access數(shù)據(jù)庫的ODBC驅(qū)動程序支持的SQL指令全,執(zhí)行效率高,所以Access后臺數(shù)據(jù)庫+ASP服務(wù)器端程序+客戶端

14、IE瀏覽器,是一個精練實用高效的組合模式。利用SQL語言,可以查詢和管理自已的數(shù)據(jù)庫。它由大約30條命令構(gòu)成,但實際只需要少數(shù)的幾個命令就可以完成相當多的工作,常用的SQL查詢命令有:Select、Insert、Delete、Update等。2.3 加密技術(shù)本設(shè)計在用戶密碼和密碼問題答案的存儲時使用了MD5加密算法來保護數(shù)據(jù)庫中的重要數(shù)據(jù)。MD5,即“Message-Digest Algorithm 5(信息-摘要算法)”,以512位分組來處理輸入的信息,且每一分組又被劃分為16個32位子分組,經(jīng)過一系列的處理后,算法的輸出由四個32位分組組成,將這四個32位分組級聯(lián)后將生成一個128位的散列

15、值。本設(shè)計在保存會員密碼和密碼提示問題答案時都先將傳遞的數(shù)據(jù)通過MD5加密后才存入數(shù)據(jù)庫,故在數(shù)據(jù)庫中只能看到已經(jīng)加密的信息,保證了信息的安全。又因為該算法是單向加密的,沒有解密算法,然而MD5算法對同一段明文加密得出的密文是唯一且相同的,相當于這段數(shù)據(jù)的數(shù)據(jù)指紋,所以當有數(shù)據(jù)要和保存的數(shù)據(jù)進行比較時,便可通過將需要對比的數(shù)據(jù)進行MD5加密后再對比。3 需求分析本系統(tǒng)采用B/S模式設(shè)計,開發(fā)目的主要是在網(wǎng)絡(luò)中提供一個安全的供多人休閑聊天交流的平臺,同時借助開發(fā)此系統(tǒng)提高自己的獨自設(shè)計能力。3.1系統(tǒng)運行環(huán)境本系統(tǒng)是在windows 2003 server操作系統(tǒng)下,搭建IIS系統(tǒng)運行平臺,使用

16、DREAMWEAVER和Frontpage作為開發(fā)工具開發(fā)的,數(shù)據(jù)庫使用ACCESS 2003。運行本系統(tǒng),需要滿足如下要求:(1) 服務(wù)器端配置:Windows 2000 ServicePack 4.0 以上操作系統(tǒng),Internet 信息服務(wù)器 5.0(IIS 5.0)Microsoft Offices ACCESS 2000 以上版本(2)客戶端要求配置Windows 2000 ServicePack 4.0 以上操作系統(tǒng),IE瀏覽器5.0及以上版本3.2系統(tǒng)總體結(jié)構(gòu) 根據(jù)聊天室的主要功能分析,本系統(tǒng)一共分為七大功能模塊:用戶注冊登陸模塊、發(fā)言功能模塊、聊天內(nèi)容顯示功能模塊、顯示用戶列表

17、模塊、輔助功能區(qū)模塊、管理功能模塊以及用戶密碼修改功能模塊。其中輔助功能區(qū)包括用戶舉報模塊以及分屏等操作功能,功能結(jié)構(gòu)圖如圖3.1所示。聊天室系統(tǒng)用戶注冊登陸模塊分屏功能用戶密碼修改模塊用戶發(fā)言模塊聊天內(nèi)容顯示模塊在線用戶列表顯示模塊輔助功能區(qū)模塊管理功能模塊清屏功能屏蔽功能用戶舉報圖3.1 功能結(jié)構(gòu)圖3.3 模塊功能分析(1)用戶注冊登陸模塊完成新用戶注冊,將注冊信息添加到數(shù)據(jù)庫中,用于用戶登陸驗證;經(jīng)過登陸驗證的用戶,方可進入聊天室進行聊天交流。(2)用戶密碼修改模塊當用戶不小心忘記或記錯了自己的注冊密碼時,可通過修改密碼,重新設(shè)定登陸密碼,其中要經(jīng)過密碼提示問題的驗證,順利通過才能修改密

18、碼。(3)用戶發(fā)言模塊除了提供發(fā)言內(nèi)容的輸入外,還應(yīng)能顯示當前用戶正在對誰發(fā)言、可選擇發(fā)言的顏色和發(fā)言的表情。發(fā)言的顏色和發(fā)言表情通過下拉式組合框?qū)崿F(xiàn)。發(fā)言內(nèi)容書寫完畢后,通過單擊“提交”按鈕或按回車,實現(xiàn)聊天內(nèi)容的顯示。(4)聊天內(nèi)容顯示模塊主要完成將每個用戶的發(fā)言的內(nèi)容顯示在頁面中,讓這些內(nèi)容對每個登陸用戶均可見(除開私聊內(nèi)容),同時還能及時顯示各用戶的發(fā)言內(nèi)容,以便始終能顯示出最新的發(fā)言內(nèi)容。(5)在線用戶列表顯示模塊該頁面實現(xiàn)在線人數(shù)和在線用戶的統(tǒng)計,并將在線用戶依次顯示出來。每個顯示用戶應(yīng)設(shè)置為一個超鏈接,當單擊用戶名時,實現(xiàn)將發(fā)言區(qū)中的發(fā)言對象設(shè)置為該用戶。(6)輔助功能區(qū)模塊提供

19、諸如分屏、清屏、刷新、屏蔽、顯示名單的操作功能。同時為用戶提供了舉報的流言功能。(7)管理模塊系統(tǒng)管理員可以查看用戶注冊信息以及用戶留言,并對其進行管理。4 系統(tǒng)總體設(shè)計4.1 系統(tǒng)總體規(guī)劃聊天室系統(tǒng)的總體流程由用戶登陸開始,通過驗證后,用戶便可進入聊天頁面進行交流聊天,同時,系統(tǒng)會將新登陸用戶的用戶名添加進在線用戶列表,即時更新??傮w流程圖如圖5.1所示。用戶登錄統(tǒng)計在線人數(shù)、在用戶列表和發(fā)言數(shù)組中添加新用戶和公告信息。進入聊天主頁面注冊用戶?是否開始退出圖4.1 系統(tǒng)總體流程圖4.2 系統(tǒng)數(shù)據(jù)庫設(shè)計4.2.1 數(shù)據(jù)庫概念模型根據(jù)系統(tǒng)功能和和流程所需數(shù)據(jù)要求,可以確定數(shù)據(jù)庫中數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu)

20、,其E-R圖如圖4.2所示。表baseuser表 投訴驗證用戶名密碼問題答案性別emaillevesdatedatequestionIDUsername1username圖4.2 數(shù)據(jù)庫E-R圖E-R(Eneity-Relationship Approach)圖是最常用的概念模型表示方法,也是數(shù)據(jù)庫的核心和基礎(chǔ),它是按用戶的觀點來對數(shù)據(jù)和信息建模的。4.2.2 數(shù)據(jù)庫各表設(shè)計對于聊天室系統(tǒng),所需的數(shù)據(jù)庫表有baseuser和投訴兩張表。Baseuser表用于存放注冊用戶的基本信息,其具體字段設(shè)計如表4.1所示。表4.1 baseuser表字段字段名數(shù)據(jù)類型長度是否允許為空說明Name文本16否

21、用戶注冊名Password密碼50否用戶登陸密碼MD5值問題文本50否密碼提示問題答案密碼50否密碼提示問題答案MD5值Email文本50否用戶郵箱性別文本2否用戶性別Leves文本10否用戶權(quán)限D(zhuǎn)ate時間10否注冊時間投訴表用于存放用戶在聊天過程中向管理員反應(yīng)的舉報信息,具體字段設(shè)計如表4.2所示。表4.2 投訴表字段字段名數(shù)據(jù)類型長度是否允許為空說明ID自動編號Username文本16否投訴人用戶名Username1文本16否被投訴人用戶名Qusetion文本50否投訴描述Date時間10否投訴時間4.2.3 數(shù)據(jù)庫連接的實現(xiàn)數(shù)據(jù)庫連接操作是一個相當頻繁的操作,在ASP的數(shù)據(jù)庫編程中,c

22、onnection對象是我們不可能離開的一個對象,該對象是ADO對象模塊中的一個專門打開和關(guān)閉數(shù)據(jù)庫連接的對象,在對數(shù)據(jù)庫進行任何的操作,比如更新記錄,插入,刪除,檢索等,都必須以connection對象的建立為前提。形象地來說,connection對象就是程序與數(shù)據(jù)庫溝通的管道,所有對數(shù)據(jù)庫的操作,都必須經(jīng)過它,因此,本系統(tǒng)首先建立一個connection對象的實例變量,然后才能在它的基礎(chǔ)上建立Recordset對象實例來操作數(shù)據(jù)庫。這里首先利用connection對象的屬性ConnStr 設(shè)置數(shù)據(jù)庫的連接方式,使用的是Access OLE DB驅(qū)動程序。使用server.createobj

23、ect方法建立connection對象的實例變量conn,使用connection對象的Open方法打開數(shù)據(jù)庫連接,核心代碼如下:connstr="DBQ="+server.mappath("userdata.mdb")+"DefaultDir=;DRIVER=Microsoft Access Driver (*.mdb);"set conn=server.createobject("ADODB.CONNECTION")conn.open connstr其中,還使用了server對象的Server.MapPath(

24、Path)方法,作用是將(path)指定的虛擬路徑轉(zhuǎn)換為實際路徑,大大提高了本系統(tǒng)的移植性。5 系統(tǒng)功能具體實現(xiàn)聊天室的功能主要是實現(xiàn)用戶的發(fā)言和觀看大家發(fā)言的內(nèi)容,發(fā)言界面和聊天內(nèi)容需要顯示在同一屏界面中,以方便發(fā)言和觀看,另外,通常還需要顯示當前在線的人數(shù)和用戶列表,以方便選擇對誰發(fā)言。用戶書寫發(fā)言的界面、聊天內(nèi)容的顯示、用戶列表的顯示均需要通過單獨的頁面來實現(xiàn),為了能在同一屏界面中同時顯示多個頁面的內(nèi)容,此時需要利用帶框架集的頁面來實現(xiàn)。框架集是多個框架的集合,每一個框架可顯示一個頁面的內(nèi)容,在同一屏中需要顯示多少個頁面,就需要創(chuàng)建一個具有多少個框架的框架集來實現(xiàn),整個框架集最后存盤形成

25、一個頁面,以后瀏覽該頁面時,各框架集中的內(nèi)容就會自動顯示出來。5.1 用戶注冊登陸模塊5.1.1 用戶注冊在聊天室首頁,單擊“用戶注冊”,便可進入用戶注冊頁面,如圖5.1所示圖5.1 用戶注冊頁面用戶進入注冊頁面后,根據(jù)要求,填寫表單中各項數(shù)據(jù),單擊確定后,系統(tǒng)通過表單傳遞的“POST”方法,將輸入的內(nèi)容傳遞給后臺處理頁面usersave.asp進行寫入數(shù)據(jù)庫處理。其中,在進行表單傳遞的時候,系統(tǒng)還調(diào)用了check()函數(shù)對填入表單的數(shù)據(jù)進行檢驗,一旦發(fā)現(xiàn)表單中有一個數(shù)據(jù)項不符合要求,系統(tǒng)便會彈出出錯信息,提示用戶重新填寫。在后臺處理頁面中,系統(tǒng)先定義對應(yīng)于表單各數(shù)據(jù)項的變量,利用ASP內(nèi)置的

26、Request對象,將用戶填入表單的數(shù)據(jù)賦給這些變量,在存入數(shù)據(jù)庫的時候直接將變量值添入數(shù)據(jù)庫即可。對從表單得到的“密碼”、“密碼提示答案”的關(guān)鍵數(shù)據(jù),在存入數(shù)據(jù)庫的時候,系統(tǒng)還調(diào)用了MD5()函數(shù)(MD5加密程序),對數(shù)據(jù)進行加密處理,這樣,存入數(shù)據(jù)庫中的“密碼”、“密碼提示答案”字段的值將以密文形式存放,提高了用戶信息的安全性。當表單數(shù)據(jù)通過審核并對需要加密的數(shù)據(jù)進行加密后,后臺處理頁面便創(chuàng)建一個Recordset對象實例來訪問數(shù)據(jù)庫的用戶信息表,實現(xiàn)代碼為set rs=server.createobject("adodb.recordset")使用Recordset對

27、象的BOF和EOF屬性來查看此用戶名是否已被注冊,如果用戶名已被注冊,則以Response對象的Redirect方法提示用戶重新注冊,保證了用戶名的唯一性。若條件為假,則將表單數(shù)據(jù)同加密數(shù)據(jù)寫入用戶注冊表中,完成注冊,實現(xiàn)代碼為sql="select * from user where 用戶名='"&name&"'"rs.Open sql,conn,1,3if not rs.eof or not rs.bof thenresponse.write "<br><br><p align=

28、center><font color=red>該用戶名已被注冊,請重新注冊其他用戶名!</font></p>"else rs.addnew頁面提示注冊成功后,用戶便可從聊天室首頁進行登陸,進入聊天室。5.1.2 用戶登錄用戶在聊天室登錄界面填入正確的注冊信息,單擊登錄,系統(tǒng)將自動把用戶填入的“帳號”、“密碼”于數(shù)據(jù)庫中存放的用戶注冊信息進行比對驗證。系統(tǒng)進行用戶身份驗證時,首先利用Request對象,將用戶填入的“帳號”(即用戶名)、“密碼”傳遞給預先定義的變量,再使用Select語句,將變量值與用戶信息表進行比對sql="sele

29、ct * from user where password='"&password&"' and name='"&username&"'"其中,由于系統(tǒng)在添加用戶信息進入數(shù)據(jù)庫表的時候,對“密碼“字段進行了MD5加密處理,存放在數(shù)據(jù)庫中的密碼是經(jīng)過加密后的MD5值,因此,在驗證用戶密碼是否符合時,系統(tǒng)把用戶輸入的密碼計算成MD5值,再與存放在系統(tǒng)中的密碼MD5值進行比較,在整個過程中,系統(tǒng)都不知道用戶的密碼具體時多少。這里,同樣使用了recordset對象的BOF和EOF屬性來查看

30、是否有該用戶的注冊信息,判斷語句與注冊中的判斷語句相同,不同的是判斷結(jié)果若為真,說明該用戶為聊天室注冊的合法用戶,這時,以Response對象的Redirect方法跳轉(zhuǎn)到聊天主頁面,Response對象的Redirect方法是實現(xiàn)頁面的跳轉(zhuǎn),使當前頁面跳轉(zhuǎn)到指定的頁面。在用戶登錄進聊天主頁面的同時,系統(tǒng)將通過驗證的用戶名以及用戶信息表中對應(yīng)用戶名的“l(fā)eves”值傳遞給特別定義的session對象session(“user”)以及session(“l(fā)eves”)。session("user")=usernamesession("leves")=rs(&q

31、uot;leves")Session對象的用途是記錄瀏覽器端專用的變量,將用戶名和該用戶對應(yīng)的權(quán)限存放在session對象中,便可在后面的聊天頁面和在線用戶列表頁面直接讀取瀏覽器端的變量值,顯示出用戶名和用戶權(quán)限所具有的功能,本系統(tǒng)中,主要是管理員的管理功能。經(jīng)過上述的用戶驗證和數(shù)據(jù)傳遞,系統(tǒng)跳轉(zhuǎn)到聊天頁面,此時用戶便可在聊天主頁面進行聊天交流了。5.2 用戶密碼修改當聊天室注冊用戶不小心忘記了注冊密碼或者把密碼記錯,用戶將無法再次進入聊天室,也就無法與聊得來的朋友繼續(xù)聊天。針對這種情況,系統(tǒng)設(shè)置了用戶密碼修改功能,以便系統(tǒng)中合法的注冊用戶在忘記密碼后,能重新設(shè)置新密碼來登錄系統(tǒng),以

32、避免用戶無法登錄。在聊天室首頁,單擊“忘記密碼”,進入用戶密碼修改頁面,如圖5.2所示圖5.2 密碼修改頁面在修改密碼的第一個頁面中(findpass.asp),系統(tǒng)要求用戶填入需要修改密碼的用戶名,單擊“確定“,系統(tǒng)通過表單的post方法,將輸入的用戶名傳遞給下一個頁面passque.asp,系統(tǒng)在轉(zhuǎn)到該頁面的同時,會對用戶輸入的用戶名進行驗證,看是否是聊天室的合法注冊用戶,驗證方法與用戶登錄的驗證方法相同。驗證通過后,打開passque.asp頁面,在該頁面中,修改密碼的用戶需要根據(jù)頁面中顯示的密碼提示問題,填入正確的密碼提示問題答案,即在注冊時用戶所填寫的密碼提示問題答案。設(shè)計這個頁面,

33、是為了更謹慎地驗證用戶的身份,以避免別人冒名修改密碼,致使正常用戶無法登錄。在passque.asp頁面中,系統(tǒng)利用request對象把findpass.asp頁面?zhèn)鬟f的用戶名存在name變量中,接著查詢用戶信息表符合用戶名等于name的記錄,將該記錄所對應(yīng)的“問題“用response.write方法顯示在頁面中name=Request("name")set rs = server.createobject("adodb.recordset")sql="select * from user where 用戶名='"&n

34、ame&"'"用戶根據(jù)頁面顯示的密碼提示問題填入相應(yīng)的答案,單擊“確定”,將表單內(nèi)容傳遞給pass.asp頁面。在頁面后臺,系統(tǒng)會首先將得到的答案與問題在系統(tǒng)數(shù)據(jù)庫中進行查詢,只有在問題和答案在一條記錄中同時匹配的時候,頁面的內(nèi)容才會顯示,否則,系統(tǒng)提示出錯,返回上一頁面。這里由于數(shù)據(jù)庫中存放的“答案”項是其MD5值,所以在進行密碼提示問題答案對比的時候,同樣是比較該數(shù)據(jù)的MD5值sql="select * from user where 用戶名='" & name & "' and 答案=

35、9;" & answer & "'"rs.open sql,conn,1,3if rs.eof and rs.bof then%><script language=vbscript>alert ("密碼提示答案錯誤,請返回驗證!")location.href = "javascript:history.back()"在系統(tǒng)經(jīng)過用戶名、密碼提示問題及密碼提示問題答案的雙重身份驗證后,用戶便可進入密碼修改頁面。在頁面中,用戶需要填寫新的登錄密碼來替換原來丟失的密碼。在進行用戶密碼替換時,

36、使用數(shù)據(jù)庫的update語句來修改數(shù)據(jù)庫中的密碼字段。系統(tǒng)首先創(chuàng)建一個Connection對象實例連接數(shù)據(jù)庫,以便對數(shù)據(jù)庫的數(shù)據(jù)進行修改。在打開Connection對象實例后,利用該對象的execute方法執(zhí)行update語句,完成對數(shù)據(jù)庫數(shù)據(jù)的修改。updatesql="update user set 密碼="'&newpwd&'"set rs=server.createobject("ADODB.Connection")rs.open rs.execute updatesql5.3 用戶發(fā)言進入聊天主頁面后,

37、用戶便可在主頁面下方的發(fā)言界面設(shè)計書寫自己想要說的話,以及想對誰說,同時,系統(tǒng)還提供了發(fā)言字體顏色選擇、插入表情、圖片的功能,如圖5.3所示,讓用戶的聊天更有趣味。圖5.3 用戶發(fā)言界面用戶發(fā)言界面采用ASP表單模式設(shè)計,在表單中,用戶根據(jù)發(fā)言對象、發(fā)言內(nèi)容、以及發(fā)言顏色填寫發(fā)言數(shù)據(jù),填寫完成后,單擊“提交”或按回車鍵,將發(fā)言內(nèi)容轉(zhuǎn)入后臺處理。在處理發(fā)言數(shù)據(jù)的時候,為了避免用戶發(fā)言為空以及發(fā)言內(nèi)容與上次發(fā)言內(nèi)容重復的情況發(fā)生,系統(tǒng)定義了一個send()函數(shù),用來檢驗用戶的發(fā)言。在send()函數(shù)中,系統(tǒng)定義了msg和post_msg 2個變量,用來存放本次發(fā)言內(nèi)容和上次發(fā)言內(nèi)容,在調(diào)用函數(shù)的執(zhí)

38、行過程中使用if語句判斷上述2中情況是否發(fā)生,如果出現(xiàn)發(fā)言為空或內(nèi)容重復,系統(tǒng)便彈出錯誤提示信息:“請輸入發(fā)言或動作”;“請不要重復發(fā)言”。if (msg='')alert('請輸入發(fā)言或動作!');document.af.msg.focus();return falseif (msg=post_msg)alert('請不要重復發(fā)言!');document.af.msg.focus();return false在發(fā)言界面中的字體顏色、動作、表情、圖片均采用下拉式列表框的方式供用戶選擇,其中,各列表框的name屬性為sayscolor、addsin

39、g、addsays、tu,以便在獲得用戶發(fā)言時根據(jù)這些列表框的name取得相應(yīng)的value值,顯示出來。<select name='sayscolor' onchange="document.af.msg.focus();bs(document.af.sayscolor.value)" style='font-size:12px'><select name='addsign' onchange="document.af.msg.value=(this.value);" style='

40、;font-size:12px'><select name='addsays' onchange="document.af.msg.focus();" style='font-size:12px'><select name='tu' onchange="document.af.msg.value=(this.value);" style='font-size:12px'>用戶發(fā)言的具體流程圖如圖5.4所示用戶發(fā)言提交發(fā)言顯示發(fā)言內(nèi)容顯示提示信息,中止表單

41、提交發(fā)言內(nèi)容是否為空是否與上次內(nèi)容相同是是否否開始結(jié)束圖5.4 用戶發(fā)言流程圖5.4 聊天內(nèi)容顯示整個聊天主頁面中,占有面積最大的便是聊天內(nèi)容顯示區(qū)。如圖5.5所示。在這個區(qū)域,分了上下2個空間,上面的用來顯示聊天室的所有發(fā)言內(nèi)容,下面用來顯示與當前使用聊天室的用戶相關(guān)的內(nèi)容,如系統(tǒng)提示信息、用戶自己的發(fā)言以及其他用戶發(fā)來的密語。這個區(qū)域可以通過后面介紹的分屏操作實現(xiàn)一個顯示區(qū)和兩個顯示區(qū)的切換。圖5.5 聊天內(nèi)容顯示區(qū)聊天內(nèi)容顯示區(qū)可以顯示最近50條發(fā)言,為了保存最近的50條發(fā)言內(nèi)容,系統(tǒng)定義一個具有50成員的一維數(shù)組sd_init;為了對應(yīng)保存每條發(fā)言是誰對誰發(fā)的,需定義一個towho(5

42、0,2)的二維數(shù)組,為了直觀,使用時數(shù)組下標均從1開始。由于數(shù)組和變量的作用域僅限于當前頁面,為了實現(xiàn)跨頁傳遞數(shù)據(jù)和對所有登錄用戶均有效,使得所有用戶都能看到聊天室里的發(fā)言內(nèi)容,為此,需要將數(shù)組和所用到的相關(guān)變量的值賦給對應(yīng)的一組Application對象來保存。Application對象的用法與Session對象基本相同,利用Application對象所創(chuàng)建的變量,可以在整個應(yīng)用中被所有用戶共享和訪問。一個用戶修改或設(shè)置了改類變量的值后,對于其他所有用戶,也是可見的。從而可見,利用Application對象所創(chuàng)建的變量,具有最大的作用域,有時也稱為Application(應(yīng)用程序)級變量。聊

43、天內(nèi)容顯示的具體流程圖如圖5.6所示。獲取在線用戶列表數(shù)從表單中獲得用戶在對誰發(fā)言從表單中獲得發(fā)言內(nèi)容獲得提交表單的其他數(shù)據(jù)獲得發(fā)言內(nèi)容,實現(xiàn)聊天內(nèi)容的輸出否否是是發(fā)言者在用戶列表中?發(fā)言對象在列表中?發(fā)言內(nèi)容不為空?否是開始結(jié)束圖5.6 發(fā)言內(nèi)容顯示流程圖在聊天顯示頁面,由于每個用戶的發(fā)言內(nèi)容均不相同,每個用戶的發(fā)言對象也不相同,那么,系統(tǒng)在顯示聊天內(nèi)容的時候就要求顯示頁面會自動根據(jù)用戶的不同而顯示不同的聊天內(nèi)容。具體來說,就是只顯示與當前使用者有關(guān)的聊天內(nèi)容,如自己的發(fā)言內(nèi)容、發(fā)給自己的聊天內(nèi)容以及其他用戶對大家的發(fā)言。要實現(xiàn)這些內(nèi)容只有特定的用戶才能看見,當然就要用客戶端的session

44、來實現(xiàn)。首先,內(nèi)容顯示頁面會將存放當前頁面用戶名的session值傳遞給后臺定義的一個變量,再將發(fā)言界面中的發(fā)言對象名賦給另一個變量,接著,再查找在線用戶列表,判斷發(fā)言對象是否還在線。判斷完畢,系統(tǒng)會將從發(fā)言界面得到的發(fā)言人和發(fā)言對象與存放用戶名的變量進行對比,同時,還會判斷發(fā)言對象是否是“大家”,如果,用戶名與發(fā)言人或發(fā)言對象中的一項相同或者發(fā)言對象是“大家”,那么,系統(tǒng)便會將傳遞的發(fā)言內(nèi)容顯示在當前的內(nèi)容顯示區(qū);如果都不符合說明系統(tǒng)中的發(fā)言內(nèi)容與當前使用用戶無關(guān),顯示頁面將不顯示該條發(fā)言信息。如此,實現(xiàn)了系統(tǒng)針對特定用戶顯示特定內(nèi)容的功能。5.5 在線用戶列表顯示在聊天主頁面的右邊,豎長方

45、形區(qū)域是用來顯示在線用戶數(shù)和在線用戶列表的。如圖5.7所示。圖5.7 用戶列表顯示頁面在顯示列表頁面中,系統(tǒng)定義了一個online的數(shù)組變量,用于存放在線用戶。在顯示時,系統(tǒng)將存放在Application(onlinelist)的值傳遞給數(shù)組online,同時調(diào)用split函數(shù)進行處理。接著用一個for循環(huán)語句,從online數(shù)組的第一個數(shù)據(jù)讀取到最后一個數(shù)據(jù),顯示在于面中。online=Application("onlinelist")online=split(online," ")for i=lbound(online) to ubound(onli

46、ne)-1Response.Write "msg=msg+'<a href=javascript:parent.seluser('"&online(i)&"'); target=f2>"&online(i)&"</a><br>'"Next顯示在線用戶列表的流程圖如圖5.8所示圖5.8 顯示用戶列表流程圖5.6 管理功能本聊天室為了提高系統(tǒng)中用戶信息的可管理性,設(shè)計了針對管理員級別的管理功能,如圖5.9所示圖5.9 系統(tǒng)功能區(qū)然而,普通用

47、戶在系統(tǒng)功能區(qū)中是無法看到管理功能的。在顯示系統(tǒng)功能中的“管理”的時候,系統(tǒng)中設(shè)計了一個if語句來判斷用戶的權(quán)限是普通用戶還是管理員,用戶權(quán)限是存放在Session(leves)變量中的,在用戶登錄系統(tǒng)的時候查詢數(shù)據(jù)庫從而賦給該變量值,如果變量Session(leves)的值為admin,那么說明當前用戶是系統(tǒng)管理員,于是,對該用戶系統(tǒng)顯示出管理功能;若Session(leves)的值為user,那么,當前用戶是普通用戶,無法使用管理功能。<% if session("leves")="admin" then %><a href=&qu

48、ot;manager.asp" target=_blank>管 理</a><% end if%>在系統(tǒng)功能區(qū)中,單擊“管理”,便可進入系統(tǒng)管理頁面。如圖5.10圖5.10 系統(tǒng)管理頁面在管理頁面中,設(shè)計的是對數(shù)據(jù)庫兩張表的鏈接,通過單擊“查看投訴信息”、“查看并管理注冊人員名單”便可實現(xiàn)將后臺數(shù)據(jù)庫中的表顯示在前臺頁面中,同時,在顯示頁面中還加入了對表中記錄的刪除操作。在頁面中顯示的數(shù)據(jù)表的每一項記錄的末尾,添加了刪除按鈕,單擊它,便會執(zhí)行delete語句,刪除該記錄。opersql="delete * from baseuser where

49、name='"&operid&"'"conn.execute (opersql)5.7 輔助功能區(qū)輔助功能區(qū)界面如圖5.9所示,用戶可單擊界面中的分屏、名單、舉報、清屏、屏蔽、刷新以及退出,完成相應(yīng)操作。其中,管理是只對系統(tǒng)管理員開放的功能,在前面已作介紹。(1)分屏在介紹聊天內(nèi)容顯示區(qū)的時候,提及了用戶可根據(jù)自己的習慣和喜好,將聊天內(nèi)容顯示頁面設(shè)置為上下兩個分區(qū)或直接顯示一個區(qū)域。用戶只需在輔助功能區(qū)中單擊分屏,便可在這兩種模式下進行切換。分屏的實現(xiàn)方法其實是非常簡單的,利用了onclick事件和框架標簽frameset實現(xiàn)的一個

50、操作。系統(tǒng)中首先定義了一個tbclu的變量,用來存放分屏的狀態(tài)值,“true”或“false”,然后定義了一個tbclutch()函數(shù),當用戶單擊“分屏”,系統(tǒng)便調(diào)用該函數(shù)用來判斷tbclu變量值,并執(zhí)行函數(shù)中定義的操作,對frameset的屬性值進行設(shè)置。function tbclutch()if (tbclu='true') this.msgfrm.rows="*,0"tbclu='false'elsethis.msgfrm.rows="1*,1*"tbclu='true'this.f2.documen

51、t.af.msg.focus();(2) 屏蔽用戶在聊天過程中,難免會遇到一些與自己交流不愉快的人,但某些人又可能對自己死纏爛打,強行進行私聊,發(fā)送私聊信息過來,擾亂用戶正常發(fā)言交流,為了防范用戶被無聊的人打擾,系統(tǒng)為用戶提供了屏蔽功能,單擊“屏蔽”,系統(tǒng)會將在線用戶顯示頁面更換為屏蔽頁面,將除當前用戶外的人員顯示出來,并且,在每個用戶名前都設(shè)置了單選框,以便用戶選擇屏蔽對象。如果選擇了屏蔽某位用戶,那么該用戶發(fā)送的密語將不會在聊天內(nèi)容窗口中顯示,用戶也就無法看到屏蔽對象的發(fā)言,避免了騷擾。(3)名單單擊名單,是為了用戶在選擇了屏蔽對象后,返回用戶列表頁面設(shè)置的。主要就是利用reload()函

52、數(shù)進行屏蔽和在線用戶列表名單切換。<a href=# onclick=parent.f5.location.reload();>名 單</a>(4)清屏當聊天室里的在線人員逐漸增多,大家的發(fā)言內(nèi)容也會隨著增加,聊天內(nèi)容顯示區(qū)很快便會被這些內(nèi)容填滿,顯得雜亂,使得用戶在查看聊天內(nèi)容時不方便。這時,用戶單擊“清屏”,系統(tǒng)會調(diào)用focus()函數(shù),將指定區(qū)域的內(nèi)容刪除,即聊天內(nèi)容顯示區(qū)變會把當前最新發(fā)言以前的所有發(fā)言內(nèi)容清空,使聊天內(nèi)容顯示區(qū)回到最初的無內(nèi)容狀態(tài)。onClick=parent.write();parent.f2.document.af.msg.focus()(

53、5) 舉報當用戶在聊天過程中,發(fā)現(xiàn)有人在聊天室中的言行惡劣,發(fā)言內(nèi)容帶有侮辱性或不文明的語言,嚴重影響了聊天室的和平交流、輕松聊天的氛圍。在這種情況下,用戶單擊舉報,打開用戶投訴舉報頁面,在頁面中,用戶根據(jù)表單內(nèi)容,填寫完畢后,回車或提交。系統(tǒng)將自動把從表單獲得的內(nèi)容存放在數(shù)據(jù)庫的投訴表中,待系統(tǒng)管理員查看。其存儲實現(xiàn)過程與用戶注冊流程基本相似。(6) 刷新該功能為用戶刷新聊天內(nèi)容所設(shè),與瀏覽器上的刷新功能類似,不過,這里的刷新僅限于聊天內(nèi)容顯示區(qū)的刷新,實現(xiàn)代碼如下:parent.f4.location.reload()(7) 退出 用戶單擊退出,觸發(fā)onclick事件調(diào)用exitchat(

54、)函數(shù),系統(tǒng)彈出詢問對話框,“你真的要退出聊天室?”,單擊確定,聊天室系統(tǒng)關(guān)閉,并釋放該客戶端存放的session變量。結(jié)論通過這三個月的學習和工作,完成了ASP網(wǎng)絡(luò)聊天室系統(tǒng)的設(shè)計,滿足了用戶需求。由于設(shè)計是基于B/S模式,該系統(tǒng)具有良好的可移植性等優(yōu)點,并且具有相當不錯的應(yīng)用前景。同時由于該系統(tǒng)使用的是基于VBScript和JavaScript的ASP技術(shù),使我對該門技術(shù)又有了更加深入的了解,并且對應(yīng)用Dreamweaver制作靜態(tài)頁面也有了相當?shù)男牡谩S捎贏SP技術(shù)相對現(xiàn)在流行的JSP等技術(shù)在安全性方面存在一定得差距,雖然在系統(tǒng)中加入了MD5加密技術(shù)對用戶密碼等關(guān)鍵字段進行加密,采用密文

55、存儲,但該系統(tǒng)在安全性方面存在與生俱來的劣勢,并且在設(shè)計該系統(tǒng)時受時間的限制,安全性的增強將有待于將來在頁面中加入更多的安全方面的JavaScript等安全組件。并且還可以配置SSL以增加系統(tǒng)的安全性。參考文獻1 鄧文淵 陳惠貞 陳俊榮 .ASP與網(wǎng)絡(luò)數(shù)據(jù)庫技術(shù)M,北京:中國鐵道出版社,20052 王珊 李盛恩 .數(shù)據(jù)庫基礎(chǔ)與應(yīng)用M,北京:人民郵電出版社,20023 施威銘研究室 .SQL Server 2000 設(shè)計務(wù)實(中文版)M,北京:人民郵電出版社,20014 李光正 馬強 胡旭令 .計算機網(wǎng)絡(luò)考試系統(tǒng)探究J.交通職業(yè)教育,2005,(5):25 周雪燕 傅剛善 王大盈 .在線考試系統(tǒng)

56、設(shè)計J.中國醫(yī)學教育技術(shù),2006,(20):26 黃濤 金保森 盧志光 .基于網(wǎng)絡(luò)的試驗教學考試系統(tǒng)的開發(fā)應(yīng)用J.科學技術(shù)與工程,2006,(6):37 許曰濱 .ASP網(wǎng)絡(luò)編程實例M,北京:人民郵電出版社,2001致 謝本文是在指導教師李梅老師和閆麗麗老師的熱情關(guān)心和耐心指導下完成的。由于自己的開發(fā)能力和開發(fā)經(jīng)驗的缺乏,在設(shè)計過程,遇到了不少的問題和困難,正是由于有老師的熱心指導,再加上同學的幫助,困難一一克服。使得論文能順利完成,達到預期的目標。老師的嚴謹?shù)闹螌W作風和良好的教學方式使我收益非淺。在他們的指導下,我不僅完成了本次畢業(yè)設(shè)計,同時也提高了自己的能力。在這里向李梅老師和閆麗麗老師

57、致以衷心的感謝,同時還有熱心幫助的同學,謝謝!作者簡介姓 名:曾力爽性別:男出生年月:1984.02民族:漢E-mail:聲 明本論文的工作是2007年02月至2007年06月在成都信息工程學院網(wǎng)絡(luò)工程系完成的。文中除了特別加以標注地方外,不包含他人已經(jīng)發(fā)表或撰寫過的研究成果,也不包含為獲得成都信息工程學院或其他教學機構(gòu)的學位或證書而使用過的材料。除非另有說明,本文的工作是原始性工作。關(guān)于學位論文使用權(quán)和研究成果知識產(chǎn)權(quán)的說明本人完全了解成都信息工程學院有關(guān)保管使用學位論文的規(guī)定,其中包括:(1)學校有權(quán)保管并向有關(guān)部門遞交學位論文的原件與復印件。(2)學??梢圆捎糜坝?、縮印或其他復制方式保存

58、學位論文。(3)學??梢詫W術(shù)交流為目的復制、贈送和交換學位論文。(4)學??稍试S學位論文被查閱或借閱。(5)學??梢怨紝W位論文的全部或部分內(nèi)容(保密學位論文在解密后遵守此規(guī)定)。除非另有科研合同和其他法律文書的制約,本論文的科研成果屬于成都信息工程學院。特此聲明! 作者簽名 年 月 日As Alexander went off duty he noticed the bobbing flicker of ships' lights far to port and starboard. Sea Shepherd ploughed on towards Miami. 4. All ashoreSusan opened her arms, as if to greet a long-lost friend. The sun had returned-not the half-hearted, hide-and-seek sun of recent weeks. No, this was the real thing, pure gold pouring ou

溫馨提示

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

評論

0/150

提交評論