版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
文檔可自由編輯打印57/57文檔可自由編輯打印文檔可自由編輯打印摘要隨著網(wǎng)絡技術的迅猛發(fā)展,網(wǎng)上交流已不再陌生,它開辟出了一條新的溝通渠道,并被人們逐漸重視。在當今WEB系統(tǒng)開發(fā)中,PHP是一種比較流行的語言,是人們經(jīng)常使用的語言之一。本系統(tǒng)就是通過使用PHP技術來設計與實現(xiàn)基于WEB的討論系統(tǒng),并采用了當今主流技術,即B/S體系結構,它打破了以前傳統(tǒng)的C/S開發(fā)模式。本文對B/S模式進行了簡要的說明,并概要的介紹了一下PHP,包括他的特點和運行方式,以及PHP開發(fā)環(huán)境的搭建在文中都有詳細的說明。從需求分析、概要設計再到系統(tǒng)設計逐層深入的把本系統(tǒng)進行了分析與研究,詳細地講解了系統(tǒng)的功能,最后還對系統(tǒng)進行了詳細的測試。關鍵詞:討論系統(tǒng);B/S;PHP
AbstractWiththerapiddevelopmentofnetworktechnology,onlinecommunicationisnolongerstrange,itopensupanewcommunicationchannel,andisincreasinglyemphasizedbypeople.BecausePHPisarelativelymaturelanguage,sothatitisoneofthefrequentusedlanguagesinthedevelopmentofnetworksystem.Thissystemdesignsandimplementsane-learningsystem—teachingforum,throughtheuseofPHPtechnologyandusingtoday'smainstreamtechnology,thatis,B/Sstructure,whichbreakstheprevioustraditionalC/Sdevelopmentmode.Inthispaper,B/SmodelarebrieflydescribedandtheoutlineofPHP,includingitscharacteristics,operationalmodalitiesarepresented.HowtobuildthePHPdevelopmentenvironmentisdetaileddecribedinthetextdescription.Fromtherequirementsanalysis,theoverallprogram,feasibilityanalysis,outlinedesign,totheoveralldesignofthissystemhasbeenanalyzedlayerbylayerdeepen.Thefunctionsofthesystempageareexplainedindetail,andfinallythesystemtest,explainedslightlyKeywords:discussionsystem;B/S;PHP
目錄摘要 IAbstract II第一章引言 51.1課題背景 51.2技術要求 51.3研究工作 5第二章需求分析 62.1可行性分析 62.1.1經(jīng)濟可行性分析 62.1.2技術可行性分析 62.1.3操作可行性 62.1.4社會可行性 62.2綜合需求分析 62.2.1功能需求 72.2.2可靠性需求 82.2.3安全性需求 82.2.4用戶需求 82.3業(yè)務流程圖 92.3.1登錄業(yè)務流程 92.3.2查看在線用戶業(yè)務流程 92.3.3查看討論業(yè)務流程 112.3.4發(fā)表討論業(yè)務流程 11第三章開發(fā)環(huán)境和開發(fā)工具介紹 123.1PHP概述 123.2PHP的特點 133.3Apache服務器 143.4MySQL5.1.30 153.5ZendStudio 153.6軟件開發(fā)環(huán)境 163.7本章小結 17第四章概要設計 184.1系統(tǒng)目標 184.2基于WEB應用程序結構 184.2.1表示層 184.2.2業(yè)務邏輯層 194.2.3數(shù)據(jù)層 194.3模塊設計 194.3.1用戶模塊 204.3.2聊天模塊 204.4系統(tǒng)功能結構 214.5數(shù)據(jù)庫設計 224.5.1數(shù)據(jù)庫分析 224.5.2數(shù)據(jù)庫概念設計 22第五章詳細設計 265.1Web站點的建立與管理 265.1.1Web服務的配置選項 265.1.2創(chuàng)建Web站點 265.2數(shù)據(jù)庫連接文件 265.3系統(tǒng)設計 275.3.1首頁模塊設計 275.3.2注冊頁模塊設計 285.3.3對話模塊 305.3.4歷史記錄模塊 335.3.5修改密碼模塊 385.3.6退出登錄模塊 39第六章系統(tǒng)測試 406.1系統(tǒng)測試說明 406.1.1系統(tǒng)測試簡介 406.1.2系統(tǒng)測試環(huán)境 416.2系統(tǒng)測試過程 416.2.1系統(tǒng)測試內(nèi)容 416.2.2系統(tǒng)測試過程 426.3測試結論 46結論 47致謝 48參考文獻 49附錄A用戶使用說明書 50第一章引言1.1課題背景隨著科學技術的不斷發(fā)展,在不同地域的成員之間進行討論變得非常普遍。計算機技術迅速向著網(wǎng)絡化、集成化方向發(fā)展。而支持網(wǎng)絡應用的新一代網(wǎng)絡版應用軟件正在涌現(xiàn),目前有一種趨勢是瀏覽器——服務器的B/S結構應用系統(tǒng),它的特點是在客戶端直接采用了功能強大的瀏覽器軟件作為界面,其優(yōu)點在于軟件開發(fā)效率高,客戶端不受操作平臺的限制、也不受地域的限制,網(wǎng)絡傳輸量少。基于WEB的討論系統(tǒng),正是為了解決和遠處的成員共同討論而開發(fā)的軟件,提高大家學習的效率,適應現(xiàn)代社會的需要。1.2技術要求(1)功能模塊劃分合理,模塊之間依賴性低,擴展性要強;(2)數(shù)據(jù)庫設計要滿足功能要求,效率要高;(3)數(shù)據(jù)庫冗余度小,盡量滿足三范式要求;(4)實現(xiàn)PHP對MySQL數(shù)據(jù)庫的訪問;(5)采用Ajax技術,能夠在不刷新頁面的情況下讀取對話信息;(6)程序能夠兼容IE、FireFox等主流的瀏覽器,做到與瀏覽器的無關性;(7)服務器系統(tǒng)必須運行穩(wěn)定,網(wǎng)絡保持暢通;1.3研究工作為了順利完成基于WEB的討論系統(tǒng)的設計與實現(xiàn),在畢業(yè)設計期間通過收集資料研究了以下部分:1.研究參考文獻中關于討論系統(tǒng)的內(nèi)容;2.學習PHP相關技術;3.利用PHP技術和ZendStudio軟件設計討論系統(tǒng)各模塊頁面;4.熟悉Apache和PHP的運行機制和配置方法;5.研究數(shù)據(jù)庫與PHP的連接模塊;6.Ajax的工作機制;7.討論系統(tǒng)的總體設計與實現(xiàn);8.對基于WEB的討論系統(tǒng)進行安全性分析。
第二章需求分析2.1可行性分析可行性分析法是對工程項目進行系統(tǒng)技術經(jīng)濟論證,經(jīng)濟合理性綜合分析的方法。其目的是通過對技術先進程度,經(jīng)濟合理性和條件可能性的分析論證,選擇以最小的人力、物力、財力耗費,取得最佳技術、經(jīng)濟、社會效益的切實方案。它是解決項目投資前期分析的主要手段。本討論系統(tǒng)的可行性主要從經(jīng)濟可行性、技術可行性、操作可信性和社會可行性分析來考慮。2.1.1經(jīng)濟可行性分析在經(jīng)濟上,該項目是可行的。本系統(tǒng)的制作只需安裝了PHP、Mysql、Apache,并且可運行在Linux系統(tǒng)上,而這些軟件都是免費的,從外界所需的條件來講成本比較低,開發(fā)時無需網(wǎng)絡支持,發(fā)布時只需要在網(wǎng)上有空間,系統(tǒng)管理員定期對網(wǎng)站進行維護,網(wǎng)站就可以正常運行。2.1.2技術可行性分析在技術上,該項目是可行的。本網(wǎng)站系統(tǒng)是采用PHP開發(fā),以異步請求為核心,Mysql為數(shù)據(jù)庫開發(fā),這些軟件可方面在Linux上安裝和調(diào)試,用ZendStudio和Photoshop等網(wǎng)頁處理工具,保證網(wǎng)站正常使用的前提下,頁面清新淡雅,內(nèi)容豐富多彩。2.1.3在操作上,該項目是可行的。未注冊用戶可在系統(tǒng)上登陸、瀏覽公共討論內(nèi)容;已注冊普通用戶除了有未注冊用戶的功能權限外,還可發(fā)表講話、查看歷史記錄和刪除歷史記錄等功能,在系統(tǒng)里面的操作簡單方便。2.1.4當今社會是一個信息技術的時代,計算機的發(fā)展越來越快,同時接觸和使用計算機的用戶也顯著增加,在這樣一個時代,計算機信息的需求量是非常大的,因此,該討論系統(tǒng)能夠很好的滿足社會的需求。2.2綜合需求分析軟件需求分析是軟件設計的基礎。它采用一系列行之有效的技術、方法和工具來分析用戶需求,通過特定的形式系統(tǒng)地描述擬開發(fā)軟件的功能、性能,以及行為特征和相關約束,定義所有內(nèi)外部特征,最后形成既能指導軟件設計、又能同用戶溝通的軟件需求規(guī)格說明。它覆蓋了軟件設計之前的各項活動。需求分析還是一個項目提出方和承擔方相互溝通的過程,一方是系統(tǒng)的使用者,一方是系統(tǒng)的制造者,在系統(tǒng)涉及過程中,只有雙方相互配合,共同對系統(tǒng)進行設計才能最后達到使用的要求。用戶是業(yè)務上的熟悉者,對業(yè)務流程有非常清晰的了解,但是,對于軟件需求方面的描述是不了解的,他們所能提供的只是他們最終要達到的功能,但是,這其中包含的業(yè)務流程是非常復雜的。我們拿到用戶需求后,應該根據(jù)功能、流程進行初步的設計,構造出業(yè)務流程圖,再讓用戶進行評審,提出業(yè)務流程上不對的地方進行修改。這樣來回的交流,最終才能取得較全面的需求,并減少后期的修改。2.2.1功能需求通過對本系統(tǒng)的使用場景模擬和用戶調(diào)研,本討論系統(tǒng)需要實現(xiàn)以下功能:免安裝客戶端用戶在不用額外安裝客戶端的情況下能夠使用本系統(tǒng),簡化用戶使用本系統(tǒng)的操作,方便用戶第一次使用本系統(tǒng),能吸引更多的新用戶使用。游客身份登陸用戶第一次接觸本系統(tǒng)時,有很多會抱著試一試的心態(tài)進來的,如果在一開始就讓用戶注冊等操作,部分用戶會覺得太麻煩而放棄使用。如果一開始讓用戶可以以匿名方式登陸,能夠看公共聊天的內(nèi)容但要注冊后才能發(fā)表講話,這樣才能吸引用戶進行注冊。用戶注冊注冊過程盡量簡化,系統(tǒng)對用戶操作本著友好的宗旨。用戶注冊之后,能夠使用本網(wǎng)站的所有功能。用戶登錄用戶可以通過本功能登錄系統(tǒng)。若用戶未登錄時進入本系統(tǒng),自動提示用戶進行登錄。第一次注冊用戶可以實現(xiàn)自動登陸系統(tǒng)。查看在線用戶用戶登陸之后,能夠在界面查看參與討論的用戶有哪些,并能顯示在線人數(shù)。選擇對話用戶進入系統(tǒng)后,默認是公共聊天模式,發(fā)表講話所有用戶能接收到;用戶在在線列表里面單擊某個用戶,可以切換為私聊模式,在對話框提示只和該用戶對話,發(fā)送的對話只有該用戶才能接收到,對其他用戶透明。此外,在線列表還有一個所有人的選項,用戶單擊該選項可以恢復公共聊天模式。發(fā)表講話發(fā)表講話時,用戶可以選擇字體的大小和顏色,方便區(qū)分和其他用戶的消息;此外,字數(shù)限定在一定范圍內(nèi),防止用戶發(fā)送字數(shù)過多的評論,影響其他用戶使用;發(fā)送頻率也要控制,對間隔太短的消息進行屏蔽,防止用戶惡意刷屏,保證系統(tǒng)的穩(wěn)定運行。查看歷史記錄用戶登錄之后,在聊天界面顯示查看歷史記錄的鏈接,點擊之后能查看以前講話的記錄。刪除歷史記錄用戶登錄之后,能刪除自己不想保存的聊天記錄,并且刪除記錄后,在對方聊天記錄同步刪除,保持用戶之間數(shù)據(jù)一致。用戶管理在聊天界面顯示修改密碼和退出登錄鏈接。修改密碼可以對自己的密碼進行修改,但必須輸入原來的密碼,新密碼要輸入兩次進行確認;退出登錄可以安全退出系統(tǒng),防止用戶離開后被其他用戶使用并竊取聊天內(nèi)容。2.2.2可靠性需求硬件可靠性:包括服務器硬盤、CPU、網(wǎng)絡環(huán)境的運行可靠性等,保證這些硬件介質(zhì)正常可靠運行。軟件可靠性:要求軟件在承載一定用戶在線等復雜的條件下也能穩(wěn)定運行,不會產(chǎn)生異常情況。2.2.31.運行系統(tǒng)的安全:保證信息處理和傳輸系統(tǒng)的安全,簡稱“系統(tǒng)安全”。系統(tǒng)安全主要包括計算機系統(tǒng)機房環(huán)境的保護,計算機網(wǎng)絡拓撲結構設計的安全性考慮,硬件系統(tǒng)的可靠安全運行,計算機操作系統(tǒng)和應用軟件的安全,數(shù)據(jù)庫系統(tǒng)的安全等,本質(zhì)上是保護系統(tǒng)的合法操作和正常運行。2.信息傳播的安全:信息傳播結果的安全,它側(cè)重于防止和控制非法的、有害的信息進行傳播,避免對互聯(lián)網(wǎng)上大量自由傳輸?shù)男畔⑹Э?,本質(zhì)上主要是維護社會的道德、法則和國家利益。3.信息內(nèi)容的安全:網(wǎng)絡上信息內(nèi)容的安全,即狹義的“信息安全”,包括用戶身份認證(一般采用口令鑒別)、用戶存取信息的權限控制、數(shù)據(jù)庫記錄訪問權限、安全審計(一般系統(tǒng)都有日志記載)、計算機病毒防治、數(shù)據(jù)加密等內(nèi)容。4.網(wǎng)絡安全:運行系統(tǒng)的安全、信息傳播的安全和信息內(nèi)容的安全的集合體。2.2.4(1)實現(xiàn)討論系統(tǒng)基本功能,能接收各個用戶的言論,按照各自的聊天對象發(fā)送到相應的用戶機瀏覽器上,在用戶瀏覽器上既能輸入自己的發(fā)言內(nèi)容又能看到他人與自己的對話內(nèi)容,能與所喜歡的用戶進行私聊,開設自己單獨的聊天包房;(2)擁有訊息區(qū),顯示聊友對話內(nèi)容的區(qū)域,方便聊友觀看和個人有關的對話;(3)擁有在線名單區(qū),顯示在線聊友,聊友昵稱等簡單信息;(4)擁有發(fā)言區(qū),讓聊友能夠讓按照個性化的風格來發(fā)表自己的觀點,并提供讓聊友選擇聊天對象,私聊等功能。2.3業(yè)務流程圖業(yè)務流程圖(TransactionFlowDiagram,簡稱TFD),就是用一些規(guī)定的符號及連接來表示某個具體的業(yè)務處理過程。在對系統(tǒng)的組織結構和功能進行分析時,需從一個實際業(yè)務流程的角度將系統(tǒng)調(diào)查中有關該業(yè)務流程的資料都串起來作進一步的分析。業(yè)務流程分析可以幫助我們了解該業(yè)務的具體處理過程,發(fā)現(xiàn)和處理系統(tǒng)的調(diào)查工作中的錯誤和疏漏。由于篇幅有限,并非所有的業(yè)務流程都會一一介紹,下面將會列出核心部分的業(yè)務流程圖和相關介紹。2.3.1登錄登錄時,系統(tǒng)分為普通登錄和游客登錄兩部分。其業(yè)務流程如圖2.1所示:用戶用戶以游客方式登錄是否已注冊用戶YYNN普通登錄注冊游客登錄圖2.1登錄業(yè)務流程圖2.3.2登錄后,普通用戶和游客都能查看在線用戶。用戶會發(fā)送請求,先從數(shù)據(jù)庫讀取用戶數(shù)據(jù),然后由程序程序生成在線用戶列表,如果在線列表有更新,則會更新到用戶屏幕上,以上過程會反復執(zhí)行,直到用戶退出登錄,流程才會停止。其業(yè)務流程如圖2.2所示:開始開始讀取用戶數(shù)據(jù)有更新生成在線列表更新在線列表退出NNYY結束圖2.2查看在線用戶業(yè)務流程圖開始開始讀取對話有更新更新到屏幕退出NNYY結束圖2.3查看討論業(yè)務流程圖2.3.3登錄后,普通用戶和游客都能查看其他用戶的討論內(nèi)容。首先由用戶發(fā)送請求,從數(shù)據(jù)庫讀取討論數(shù)據(jù),如果討論內(nèi)容有更新,則會更新到用戶屏幕上,以上過程會反復執(zhí)行,直到用戶退出登錄,流程才會停止。其業(yè)務流程如圖2.3所示:2.3.4發(fā)表討論登錄后,只有普通用戶能表討論,游客不能發(fā)表。用戶編寫好內(nèi)容后,發(fā)送請求到服務器,由服務器腳本把用戶編寫的討論內(nèi)容插入到數(shù)據(jù)庫。其業(yè)務流程如圖2.4所示:開始開始編寫內(nèi)容發(fā)送至服務器Y結束插入數(shù)據(jù)庫圖2.4查看討論業(yè)務流程圖
第三章開發(fā)環(huán)境和開發(fā)工具介紹基于WEB的討論系統(tǒng),基于目前非常流行的WEB2.0技術。本系統(tǒng)設計為B/S結構的應用系統(tǒng)。服務器端的WEB服務器采用Apache,客戶端用PHP作為前端開發(fā)工具,后臺采用MySQL5.1.30的數(shù)據(jù)庫。系統(tǒng)運行環(huán)境為WindowsXP或Linux。服務器端采用目前流行的服務器端腳本語言——PHP,其優(yōu)勢在于其是基于WEB的開發(fā)工具,方便的程序跟蹤和調(diào)試環(huán)境,有眾多的擴展類庫,安全性高,運行穩(wěn)定,語法簡單易學易用等,還有一大特點就是免費,是進行快速、高效開發(fā)的理想選擇。3.1PHP概述PHP獨特的語法混合了C、Java、Perl以及PHP自創(chuàng)新的語法。它可以比CGI或者Perl更快速的執(zhí)行動態(tài)網(wǎng)頁。用PHP做出的動態(tài)頁面與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執(zhí)行,執(zhí)行效率比完全生成HTML標記的CGI要高許多;PHP還可以執(zhí)行編譯后代碼,編譯可以達到加密和優(yōu)化代碼運行,使代碼運行更快。PHP具有非常強大的功能,所有的CGI的功能PHP都能實現(xiàn),而且支持幾乎所有流行的數(shù)據(jù)庫以及操作系統(tǒng)。PHP最初是1994年RasmusLerdorf創(chuàng)建的,剛剛開始只是一個簡單的用Perl語言編寫的程序,用來統(tǒng)計他自己網(wǎng)站的訪問者。后來又用C語言重新編寫,包括可以訪問數(shù)據(jù)庫。在1995年以PersonalHomePageTools(PHPTools)開始對外發(fā)表第一個版本,Lerdorf寫了一些介紹此程序的文檔,并且發(fā)布了PHP1.0。在這早期的版本中,提供了訪客留言本、訪客計數(shù)器等簡單的功能。以后越來越多的網(wǎng)站使用了PHP,并且強烈要求增加一些特性,比如循環(huán)語句和數(shù)組變量等等,在新的成員加入開發(fā)行列之后,在1995年中,PHP2.0發(fā)布了。第二版定名為PHP/FI(FormInterpreter)。PHP/FI加入了對mySQL的支持,從此建立了PHP在動態(tài)網(wǎng)頁開發(fā)上的地位。到了1996年底,有15000個網(wǎng)站使用PHP/FI;時間到了1997年中,使用PHP/FI的網(wǎng)站數(shù)字超過五萬個。而在1997年中,開始了第三版的開發(fā)計劃,開發(fā)小組加入了ZeevSuraski及AndiGutmans,而第三版就定名為PHP3。2000年,PHP4.0又問世了,其中增加了許多新的特性。PHP原本的簡稱為PersonalHomePage,是RasmusLerdorf為了要維護個人網(wǎng)頁,而用c語言開發(fā)的一些CGI工具程序集,來取代原先使用的Perl程序。最初這些工具程序用來顯示RasmusLerdorf的個人履歷,以及統(tǒng)計網(wǎng)頁流量。他將這些程序和一些表單直譯器整合起來,稱為PHP/FI。PHP/FI可以和數(shù)據(jù)庫連接,產(chǎn)生簡單的動態(tài)網(wǎng)頁程序。RasmusLerdorf在1995年6月8日將PHP/FI公開釋出,希望可以透過社群來加速程序開發(fā)與尋找錯誤。這個釋出的版本命名為PHP2,已經(jīng)有今日PHP的一些雛型,像是類似Perl的變量命名方式、表單處理功能、以及嵌入到HTML中執(zhí)行的能力。程序語法上也類似Perl,有較多的限制,不過更簡單、更有彈性。在1997年,任職于TechnionIIT公司的兩個以色列程序設計師:ZeevSuraski和AndiGutmans,重寫了PHP的剖析器,成為PHP3的基礎,而PHP也在這個時候改稱為PHP:HypertextPreprocessor.[5]。經(jīng)過幾個月測試,開發(fā)團隊在1997年11月釋出了PHP/FI2,隨后就開始PHP3的開放測試,最后在1998年6月正式釋出PHP3。ZeevSuraski和AndiGutmans在PHP3釋出后開始改寫PHP的核心,這個在1999年釋出的剖析器稱為ZendEngine[7],他們也在以色列的RamatGan成立了ZendTechnologies來管理PHP的開發(fā)。在2000年5月22日,以ZendEngine1.0為基礎的PHP4正式釋出,2004年7月13日則釋出了PHP5,PHP5則使用了第二代的ZendEngine[5]。PHP包含了許多新特色,像是強化的面向?qū)ο蠊δ?、引入PDO(PHPDataObjects,一個存取數(shù)據(jù)庫的延伸函數(shù)庫)、以及許多效能上的增強。目前PHP4已經(jīng)不會繼續(xù)更新,以鼓勵用戶轉(zhuǎn)移到PHP5。2008年PHP5成為了PHP唯一的有在開發(fā)的PHP版本。將來的PHP5.3將會加入Latestaticbinding和一些其他的功能強化。PHP6的開發(fā)也正在進行中,主要的改進有移除register_globals、magicquotes和Safemode的功能。今天,已經(jīng)有包括百度和雅虎等在內(nèi)的數(shù)千萬大型網(wǎng)站,以及眾多的開發(fā)人員和編程愛好者正在使用PHP。從最初的PHP/FI到現(xiàn)在的PHP5,PHP的發(fā)展是及其迅猛的,其未來的發(fā)展前景也必定令人矚目。3.2PHP的特點PHP有著簡單易用和功能強大的特點,這完全要歸功于其開放的模塊化設計。在基于Zend引擎的支持和優(yōu)化下,各種各樣的擴展模塊,其功能已經(jīng)覆蓋幾乎所有的Web應用。1、開放性源代碼PHP[4]的原始碼完全公開,在OpenSource意識抬頭的今天,它更是這方面的中流砥柱。新函數(shù)庫的不斷加入,強大的更新活力,使得PHP無論在UNIX還是Win32的平臺上都可以有更多新的功能。它提供豐富的函數(shù)式,使其在程序設計方面有著更好的支援,比傳統(tǒng)CGI或者ASP等程序更好,而且還有更強的新功能、更豐富的函數(shù)庫。2、基于服務器端由于PHP是在Web服務器端運行的,所以即使PHP程序很大、很復雜,也不會降低客戶端的運行速度。這意味著它同ASP一樣,不會占用太多的客戶端資源,同時相對于ActiveX、VBScript或JavaScript等運行在客戶端的語言工具,也具有較好的安全性。而且這些語言可以很好地結合起來,用PHP可以方便地激活ActiveX控件,也可以動態(tài)地生成Script語句。3、跨平臺PHP程序可以在UNIX、Linux、Windows和Macintosh等操作系統(tǒng)下運行。同時PHP可以在Apache、IIS或ISAPI服務器上運行,并且不經(jīng)改變就可在服務器平臺間移植。這一點很重要,也是它流行的一個重要原因。NASPI一定要在Netscape的服務器(如NETSCAPEENTERPRISESERVER或FASTTRACKSERVER)上才可以運行,而ASP及ISAPI只在IIS上才有良好的性能。4、簡單的語言PHP和Java、Perl以及C++不同,它以基本語言為基礎,但其功能卻強大到足以支持任何類型的Web站點。Java、Perl以及C++雖然也可以驅(qū)動Web應用程序,但它們和Web的通信不如PHP和ASP方便,語言也不夠簡練。PHP吸取了C語言的精華,對于有Perl和C語言編程經(jīng)驗的人來說,學習PHP是一件很容易的事情。因為PHP語言可以嵌入到HTML內(nèi)部,這使得它的編程很靈活。5、高效率和其他的解釋性語言相比,PHP系統(tǒng)消耗的系統(tǒng)資源較少。當用戶使用的是Apache服務器,并把PHP作為ApacheWeb服務器的一部分時,運行代碼不需要調(diào)用外部二進制程序,服務器解釋腳本也不需要承擔任何額外負擔,這使得PHP速度很快。用戶可以組建一個可以讀取XML信息的PHP版本。6、圖象處理PHP并非只限于創(chuàng)建HTML文件,還可以使用PHP動態(tài)地創(chuàng)建圖像,甚至可以使用更方便的GIF數(shù)據(jù)流。大多數(shù)圖象函數(shù)都是在GD庫中完成它們的功能的,GD庫實際上是處理GIF圖像的免費軟件,它可以通過PHP2.INI獲得DL函數(shù)來加載。但getimagesize函數(shù)是唯一的例外,因為它總是有效的,因此需要使用GD庫中的圖象函數(shù)來編譯PHP。需要說明的是,所有生成GIF圖像的函數(shù)均要求GD擴展。這些函數(shù)用來處理在Web中最為流行的GIF格式的圖形圖像。在利用這些函數(shù)生成圖像時,不能簡單地決定在輸出HTML腳本中間輸出一個圖像,而必須由一個IMG標記引出一個單獨的腳本來發(fā)送一個內(nèi)容類型的頭。3.3Apache服務器Apache服務器是運行PHP程序最好的服務器系統(tǒng),通常情況下Apache都是運行于Linux操作系統(tǒng)上的,但Apache也可以用于Windows版。本系統(tǒng)就是在WindowsXP下來搭建服務器環(huán)境,采用最新的Apache2.2.11版本服務器。Apache的特性簡述如下:幾乎可以運行在所有的計算機平臺上。支持最新的HTTP/1.1協(xié)議。簡單而且強有力的基于文件的配置(HTTPD.CONF)。支持通用網(wǎng)關接口(CGI)。支持虛擬主機。支持HTTP認證。集成PERL。集成的代理服務器。可以通過WEB瀏覽器監(jiān)視服務器的狀態(tài),
可以自定義日志。支持服務器端包含命令(SSI)。支持安全SOCKET層(SSL)。具有用戶會話過程的跟蹤能力。支持FASTCGI
。支持JAVA
SERVLETS。3.4MySQL5.1.30MySQL是一個多用戶、多線程的SQL數(shù)據(jù)庫,是一個客戶機/服務器結構大應用,它由一個服務器守護程序mysqld和很多不同的客戶程序及庫組成。它是目前市場上運行最快的SQL(StructuredQueryLanguage,結構化查詢語言)數(shù)據(jù)庫之一。它提供了其他數(shù)據(jù)庫少有的編程工具,而且MySQL對于商業(yè)和個人用戶是免費的。在本系統(tǒng)中,使用相對MySQL5.1MySQL5的功能特點如下:可以同時處理幾乎不限數(shù)量的用戶;處理多達50000000條以上的記錄;命令執(zhí)行速度快;具有簡單有效的用戶特權系統(tǒng)。3.5ZendStudio一個屢獲大獎的專業(yè)PHP集成開發(fā)環(huán)境,具備功能強大的專業(yè)編輯工具和調(diào)試工具,支持PHP語法加亮顯示,支持語法自動填充功能,支持書簽功能,支持語法自動縮排和代碼復制功能,內(nèi)置一個強大的PHP代碼調(diào)試工具,支持本地和遠程兩種調(diào)試模式,支持多種高級調(diào)試功能。如圖3.1所示圖3.13.6軟件開發(fā)環(huán)境在開發(fā)基于WEB的討論系統(tǒng)時,該項目使用的軟件開發(fā)環(huán)境如下:1.服務器端操作系統(tǒng):WindowsXP服務器:Apache2.2.11PHP軟件:PHP5數(shù)據(jù)庫:MySQL5.1.30MySQL圖形化管理軟件:phpMyadmin開發(fā)工具:ZendStudio瀏覽器:IE6.0及以上版本分辨率:最佳效果像素2.客戶端:操作系統(tǒng):WindowsXP瀏覽器:IE6.0及以上版本分辨率:最佳效果像素3.7本章小結本章主要講述了基于WEB的系統(tǒng)的開發(fā)所用到的相關技術的簡要介紹。本系統(tǒng)主要是使用PHP技術來進行開發(fā),使用ZendStudio作為系統(tǒng)界面的開發(fā)軟件,使用Apache作為系統(tǒng)的服務器,使用MySQL5.1
第四章概要設計4.1系統(tǒng)目標21世紀是網(wǎng)絡的時代,Internet的普及已經(jīng)影響了傳統(tǒng)的交流方式。討論系統(tǒng)是計算機網(wǎng)絡發(fā)展的產(chǎn)物,是最為常見、最受廣大互聯(lián)網(wǎng)使用者所認可的基于Web的網(wǎng)絡應用系統(tǒng)。隨著互聯(lián)網(wǎng)的發(fā)展,人們通過網(wǎng)絡可以更方便快捷地進行信息交流和學習,討論系統(tǒng)可以為大家提供一個更好的交流平臺,在這個平臺上,人們可以通過文字與符號進行實時的交談、聊天,它是一個向整個因特網(wǎng)開放的地方,是提供給網(wǎng)民一個學習與娛樂的場所,在討論系統(tǒng)里大家可選擇自已的聊天對象,與其進行對話交流,是成員之間相互溝通、交流情感的最佳方式之一。從傳播方式上講,討論系統(tǒng)傳播是非線性傳播。非線形傳播指討論系統(tǒng)傳播的信息是為無數(shù)的共享空間的網(wǎng)絡用戶所發(fā)出的,任何擁有網(wǎng)絡傳播權利的人都可以得到,網(wǎng)絡打破了傳統(tǒng)媒體單向傳送信息的格局,信息傳播者與接收者之間的互動變得切實可行。從傳播流量上看,討論系統(tǒng)傳播具有傳統(tǒng)媒體前所未有的兼容性。從傳播的信息內(nèi)涵上講,討論系統(tǒng)的消息結構是無中心的。討論系統(tǒng)所給受眾帶來的信息與感受作為一種現(xiàn)代生活資源,在實現(xiàn)了從傳統(tǒng)大眾傳播的單向傳播向多向傳播的轉(zhuǎn)變后,極大地拓展了現(xiàn)代生活空間,使傳播者與受眾之間的直接連通成為可能。這一轉(zhuǎn)變使整個傳播結構與傳播效果發(fā)生了巨大變化,是傳統(tǒng)媒體無法比擬的。課題的最終目標是開發(fā)一個小型、快速的在線討論系統(tǒng)。為廣大用戶提供一個簡明友好快速便捷的交流平臺。用戶可以快速地進行新用戶的注冊,無須安裝,直接通過瀏覽器進行在線交流,本討論系統(tǒng)運行環(huán)境要求較低。用戶在系統(tǒng)里可以暢所欲言、所發(fā)表的信息即時顯示在瀏覽器上。4.2基于WEB應用程序結構基于WEB結構,即B/S結構模型把傳統(tǒng)C/S結構模型的服務器端進一步深化,分解為一個應用服務器(Web服務器)和一個或多個數(shù)據(jù)庫服務器,用瀏覽器(Browser)作為客戶端,從而形成三層或多層模型。B/S結構分為表示層、業(yè)務邏輯層和數(shù)據(jù)層。4.2.1表示層主要負責人機交互,其功能是為用戶提供一個瀏覽文檔的可視化窗口,用戶通過瀏覽器,向Web服務器發(fā)送請求,處理應用系統(tǒng)界面的輸出,是實現(xiàn)用戶與應用邏輯處理結果的交互界面。4.2.2業(yè)務邏輯層是教學論壇核心邏輯的應用主體。它主要是處理表示層傳遞過來的用戶響應,并將結果返回給表示層。業(yè)務邏輯層中包含了各種業(yè)務邏輯模塊以及對這些模塊管理、調(diào)度整個系統(tǒng)的各個模塊的業(yè)務邏輯功能都在這一層實現(xiàn)。這一層主要由各種業(yè)務組件和不同層次的JavaBeans組成,并對應用邏輯進行集中管理。4.2.3數(shù)據(jù)層主要提供數(shù)據(jù)管理,對數(shù)據(jù)庫進行讀寫,能夠執(zhí)行大量的數(shù)據(jù)更新和檢索,完成數(shù)據(jù)存儲,如圖1所示。圖4.1數(shù)據(jù)層圖示例如:用戶通過瀏覽器訪問Web服務器中的教學論壇主頁面進行登錄,系統(tǒng)驗證用戶身份后,根據(jù)用戶操作權限進行操作頁面,用戶利用操作頁面輸入各種操作命令(如查詢、瀏覽等),命令和數(shù)據(jù)經(jīng)Web服務器訪問數(shù)據(jù)庫服務器上相關數(shù)據(jù)后,由數(shù)據(jù)庫服務器將處理結果返回給Web服務器,Web服務器再將處理結果生成HTML頁面返回到客戶端瀏覽器。4.3模塊設計歡迎界面用戶模塊歡迎界面用戶模塊聊天模塊圖4.2網(wǎng)站模塊分析網(wǎng)站總體分為三大模塊,分別是:歡迎界面、用戶模塊、聊天模塊。其中歡迎模塊就是開始的歡迎頁面,是全網(wǎng)站的首頁,也是帶領用戶進入本網(wǎng)站的向?qū)?,其中包含進入登錄界面和進入注冊界面兩個功能。4.3.1用戶模塊用戶模塊用戶注冊用戶登錄修改密碼退出登錄圖4.3用戶模塊分析用戶模塊主要包括用戶注冊、用戶登錄、修改密碼和退出登錄幾個單元。用戶的登錄可以使用已經(jīng)注冊的注冊用戶身份登錄,也可以使用游客身份進行登錄。使用游客身份登錄的話是不需要注冊的,但同時也不能發(fā)言,只能查看其他用戶發(fā)言,可以彌補這個的就是使用注冊用戶身份了,那樣便可以有一個固定的稱呼,可以更好的與聊友們交流,不過這樣的話就需要用戶進行注冊了。用戶的注冊單元是常規(guī)的注冊,主要包含用戶名、密碼。注冊的成功與否會有相應的提示。已注冊用戶的登錄實現(xiàn)主要通過將用戶的提交用戶名與數(shù)據(jù)庫中的對比,查找是否有該用戶名,使用動態(tài)select選取SQL語句。如果數(shù)據(jù)庫內(nèi)沒有該用戶名,則該用戶顯然尚未注冊,反饋相應信息;如果有該用戶名則繼續(xù)對應用戶提交的密碼與數(shù)據(jù)庫內(nèi)該用戶名項的密碼相對比,一樣則允許用戶登錄,并將頁面轉(zhuǎn)到聊天界面,否則提示相應錯誤信息。修改密碼和退出登錄容易理解。修改密碼是指用戶更改自己正在使用的密碼,修改的時候必須輸入舊密碼以確認用戶身份;退出登錄指退出當前會話,注銷當前SESSION,防止其他用戶非法進入。4.3.2聊天模塊聊天模塊用戶列表單元輸入單元輸出單元歷史記錄單元圖4.4聊天模塊分析聊天頁面由四個單元組成,如上圖所示,分別為用戶列表單元、輸入單元、輸出單元和歷史記錄單元。用戶列表單元為顯示當前在線用戶的用戶名的地方,位于聊天頁面的右邊,并將各個在線用戶的用戶名以超級鏈接的方式顯示出來,供當前使用者點擊并自動獲得下一個說話對象,頁面使用了自動刷新方法,刷新時間為2秒,從而保證了列表中的總能保持著較為新的當前用戶名列表。輸入單元是用戶進行聊天的主要單元,用戶的發(fā)言、聊天對象、表情用語、是否私聊、是否退出私聊或者是退出討論系統(tǒng),都是通過輸入?yún)^(qū)實現(xiàn)的。這里是用戶的操作界面。聊天對象的文本框是一個動態(tài)文本框,當用戶點擊左邊的用戶列表中的用戶名的超鏈接時實現(xiàn)兩個人之間的私聊輸出單元是用戶的發(fā)言區(qū),所有的談話都將在這里得到顯示,無論是公告、對所有人的聊天或者是私聊的話語。信息的得到是通過輸入?yún)^(qū)獲得,或系統(tǒng)自動生成的。用戶的輸出語言因用戶的發(fā)言方式,如私聊或悄悄話等而不同,文字的顏色也是用戶自己所選擇。輸出單元的文字條數(shù)在多于輸出頁面大小的時候會自動產(chǎn)生滾動條并滾動,以保持最新的聊天內(nèi)容在輸出單元顯示。歷史記錄單元讓用戶登錄能查看以前講話的記錄,方便上次對話的主題,以便更好的進行本次對話;并能刪除自己不想保存的聊天記錄,并且刪除記錄后,在對方聊天記錄同步刪除,保持用戶之間數(shù)據(jù)一致4.4系統(tǒng)功能結構基于WEB的討論系統(tǒng)的功能結構圖如圖4.5所示。討論系統(tǒng)討論系統(tǒng)用戶登錄選擇對話用戶發(fā)表講話查看歷史記錄刪除歷史記錄修改密碼退出登錄查看在線用戶用戶注冊圖4.5系統(tǒng)功能結構圖表4.1系統(tǒng)功能描述功能名稱功能描述輸入內(nèi)容輸出內(nèi)容用戶登陸保證合法用戶通過身份驗證用戶名,密碼用戶登陸狀態(tài)用戶注冊成為本系統(tǒng)的用戶用戶名,密碼用戶是否注冊成功查看在線用戶查看當前在線情況無在線用戶列表發(fā)表講話發(fā)送對話給對方對話內(nèi)容對話內(nèi)容查看歷史記錄可以查看以前的對話記錄無歷史對話內(nèi)容刪除歷史記錄可以刪除以前的對話記錄要刪除的記錄刪除是否成功修改密碼可以修改自己的登陸密碼舊密碼,新密碼修改密碼是否成功退出系統(tǒng)安全退出當前會話無返回歡迎頁面4.5數(shù)據(jù)庫設計4.5.1數(shù)據(jù)庫分析數(shù)據(jù)庫的設計通常是以一個已經(jīng)存在的數(shù)據(jù)庫管理系統(tǒng)為基礎的,常用的數(shù)據(jù)庫管理系統(tǒng)有MySQL、Server、Oracle、Access等。本系統(tǒng)采用了MySQL數(shù)據(jù)庫,phpMyAdmin為MySQL數(shù)據(jù)庫提供了圖形化界面。4.5.2數(shù)據(jù)庫概念設計根據(jù)以上各節(jié)對系統(tǒng)所做的需求分析、系統(tǒng)設計,規(guī)劃出點本系統(tǒng)的實體關系E-R圖。實體關系E-R圖是用來描述實體之間關系的圖表,構成E-R圖的基本要素是實體型、屬性和聯(lián)系。本系統(tǒng)中使用的數(shù)據(jù)庫實體分別為用戶信息實體和對話信息實體?,F(xiàn)介紹其實體的E-R圖。用戶信息實體商品信息實體包括用戶名、加密密碼、在線驗證時間、最后登錄時間、最后對話時間等屬性。商品信息的實體圖如圖4.6所示。用戶信息用戶信息加密后的密碼在線驗證時間用戶名最后對話時間最后登錄時間圖4.6用戶信息實體圖對話信息實體商品訂單實體包括對話ID,對話時間,對話內(nèi)容,發(fā)送方,接收方等屬性。商品訂單的實體圖如圖4.7所示。對話信息對話信息對話ID接收方對話時間對話內(nèi)容發(fā)送方圖4.7商品訂單實體圖
4.5.3創(chuàng)建數(shù)據(jù)庫及數(shù)據(jù)表1.在phpMyAdmin的主界面中創(chuàng)建數(shù)據(jù)庫,創(chuàng)建一個名稱為chat的數(shù)據(jù)庫。具體如下圖4.8所示。圖4.8創(chuàng)建數(shù)據(jù)庫2.結合實際情況及對用戶需求的分析,討論系統(tǒng)數(shù)據(jù)庫主要包含如下數(shù)據(jù)表。(1)user(用戶信息表)用戶信息表主要用于存儲用戶的信息。該數(shù)據(jù)表結構如表4.2所示。表4.2用戶信息表usernamevarchar(32)用戶名pswvarchar(32)md5加密后的密碼login_timevarchar(19)在線驗證時間login_tvarchar(19)最后登錄時間last_talkvarchar(19)最后對話時間(2)chat_mess(對話信息表)用戶訂單表主要用于存儲用戶的訂單信息。該數(shù)據(jù)表結構如表4.3所示。表4.3對話信息表idint(10)對話IDtimevarchar(19)對話時間contentvarchar(225)對話內(nèi)容user_fromvarchar(32)發(fā)送方user_tovarchar(32)接收方3.生成表的SQL語句,如圖4.9所示。圖4.9生成表的SQL語句
第五章詳細設計5.1Web站點的建立與管理5.1.1Web服務的配置選項安裝服務器和數(shù)據(jù)庫:為了方便,本系統(tǒng)安裝“WampServer2.0i”集成軟件,即三合一軟件(Windows平臺下PHP語言、Apach服務器和MYSQL數(shù)據(jù)庫)和ZendStudio網(wǎng)站構建軟件,這樣可以省略很多復雜的系統(tǒng)配置。在安裝“WampServer2.0i”軟件的時候,默認目錄為:D:\wamp\。系統(tǒng)默認配置如下:服務器名稱:localhost數(shù)據(jù)庫名稱:root數(shù)據(jù)庫密碼:(空)5.1.2創(chuàng)建Web站點在目錄“D:\wamp\www\”下創(chuàng)建網(wǎng)站站點PHP,作為該系統(tǒng)的站點。運行Apach服務器和MYSQL服務器,開始建立網(wǎng)站主頁index.php。5.2數(shù)據(jù)庫連接文件由于基本上所有的頁面都需要進行數(shù)據(jù)庫連接,為了節(jié)省篇幅,把與數(shù)據(jù)庫連接的代碼另存為一個單獨的文件并命名為conn.php,需要時在其他的所有文件前用“include”調(diào)用即可,數(shù)據(jù)為連接文件connt.php代碼如下:<?php
error_reporting(0);
$hostname_conn="";
$database_conn="chat";
$username_conn="root";
$password_conn="";
$conn=mysql_connect($hostname_conn,$username_conn,$password_conn)
or
trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($database_conn,$conn);
mysql_query("SET
NAMES
'gbk'");
?>5.3系統(tǒng)設計5.3.1首頁模塊設計本系統(tǒng)的主界面為index.php,如圖5.1所示,它的功能是引導未注冊用戶進行注冊,已注冊用戶進行登錄。圖5.1系統(tǒng)主界面登錄模塊核心代碼:
$username=trim($_POST['username']);
$p=$_POST['psw'];
$psw=md5($p);
$day=date("Y-m-d
H:i:s",gmmktime()+(60*60*8));//得到當前時間
$sql=sprintf("select
*
from
user
where
username='%s'
and
psw='%s'",
$username,$psw);
$Result=mysql_query($sql,$conn)
or
die(mysql_error());
$row=mysql_num_rows($Result);驗證用戶登錄信息
$sql=sprintf("insert
into
chat_mess
(time,content,user_from,user_to)
values
('%s','%s','1','1')",$day,$message);
mysql_query($sql,$conn);
$_SESSION['username']=$username;
$_SESSION['login_t']=$day;
echo
"<script>window.location.href='chat.php?first=1';</script>";登入系統(tǒng),并跳轉(zhuǎn)到首頁5.3.2注冊頁模塊設計本模塊的主要功能是引導用戶進行注冊,注冊需要輸入用戶昵稱和密碼,昵稱2~32位字符,且不能輸入"<"、"\"和空格,注冊前還可以點擊昵稱驗證確保昵稱沒有被注冊過,防止用戶注冊不成功而進行無效的操作;密碼6~32位字符,不能有空格,且需要重復輸入一次進行確認,兩次輸入一致才能注冊成功。如圖5.2所示:圖5.2用戶注冊頁面注冊模塊核心代碼:
$username=(!get_magic_quotes_gpc())?addslashes($_POST['username']):
$_POST['username'];
$psw=(!get_magic_quotes_gpc())?addslashes($_POST['psw']):
$_POST['psw'];
$pswcheck=(!get_magic_quotes_gpc())?addslashes($_POST['pswcheck']):
$_POST['pswcheck'];
//后臺驗證
if(strlen($username)>64||strlen($username)<2||$username=="")
//驗證昵稱長度是否>=3,<=32
{
echo
"對不起,您輸入的昵稱長度小于3或者大于32或為空!";
exit;
}
if(preg_match('/\s/',
$username))
{
echo
"對不起,您輸入的昵稱不能有空格";
exit;
}
if(strlen($psw)<6||strlen($psw)>64||$psw=="")
//驗證密碼長度是否為6~32之間
{
echo
"對不起,您輸入的密碼長度不合要求或輸入為空";
exit;
}
if(preg_match('/\s/',
$psw))
{
echo
"對不起,您輸入的密碼稱不能有空格!";
exit;
}
if($psw!=$pswcheck)
{
echo
"對不起,您輸入的密碼不一致!";
exit;
}驗證用戶數(shù)據(jù)
$psw=md5($psw);
$day
=
date("Y-m-d
H:i:s",gmmktime()+(60*60*8));//得到當前時間
$insertSQL=sprintf("INSERT
INTO
user(username,psw,login_t)
VALUES('%s','%s','%s')",
$username,$psw,$day);
$Result1=mysql_query($insertSQL,$conn)
or
die(mysql_error());插入用戶表5.3.3對話模塊本模塊的主要功能是查看在線用戶并且和其他成員進行對話,可以選擇和所有人對話或者和指定成員進行對話。如圖5.3所示圖5.3系統(tǒng)對話頁面對話模塊核心代碼:
$sql=sprintf("select
*
from
chat_mess
where
time>='%s'
and
(user_from
='%s'or
user_to='%s'
or
user_to=\"所有人\"
or
user_from='1')
order
by
id
desc
limit
0,30",$time,$username,$username);
$lines=mysql_query($sql,$conn);
$rows=mysql_num_rows($lines);取出對話數(shù)據(jù)function
createAJAX()
{//創(chuàng)建XMLHttp對象
if
(window.XMLHttpRequest)
{
var
oHttp
=
new
XMLHttpRequest();
return
oHttp;
}
else
if
(window.ActiveXObject)
{
var
versions
=
[
"MSXML2.XmlHttp.6.0",
"MSXML2.XmlHttp.3.0"
];
for
(var
i
=
0;
i
<
versions.length;
i++)
{
try
{
var
oHttp
=
new
ActiveXObject(versions[i]);
return
oHttp;
}
catch
(error)
{}
}
}
throw
new
Error("Your
browser
doesn't
support
XMLHttpRequest");
}Javascript創(chuàng)建異步請求對象的代碼
var
load_word_ajax;
function
load_word()
{
load_word_ajax
=
createAJAX();
load_word_ajax.open('POST','<?php
echo
basename(__FILE__);?>',
true);
load_word_ajax.onreadystatechange
=
load_word_change;
var
urlstring
=
'';
urlstring+=
"action=read";
urlstring+=
"&username="+encode(getId("chat_user").value);
load_word_ajax.setRequestHeader("Content-Type",
"application/x-");
load_word_ajax.send(urlstring);
}Javascript發(fā)送異步請求的代碼
function
load_word_change()
{//下載完成后的處理函數(shù)
if
(load_word_ajax.readyState
==
4)
{
if
(load_word_ajax.status
!=
200)
{
load_word_error();
return;
}
if((load_word_ajax.responseText.indexOf("dele"))!=-1)
{
alert('您已經(jīng)被刪除了!');
window.location.href="../index.php";
}
if((load_word_ajax.responseText.indexOf("quited"))!=-1)
{
alert("您已經(jīng)離開了討論系統(tǒng)!");
window.location.href="../index.php";
}
else
{//alert(load_word_ajax.responseText)
getId('div_contents').innerHTML=load_word_ajax.
responseText;//在客戶端顯示聊天信息*/
document.getElementById("div_contents").scrollTop=100000;
}
}
}處理客戶端顯示的代碼
var
online_ajax;
function
keeponline()
{
var
username="<?php
echo
$_SESSION['username'];?>";
if(!username)
{
alert("您已經(jīng)離開了討論系統(tǒng)!");
window.location.href="../index.php";
}
online_ajax=createAJAX();
online_ajax.open('POST','<?php
echo
basename(__FILE__);?>',1);
online_ajax.setRequestHeader("Content-Type",
"application/x-");
online_ajax.onreadystatechange=function()
{
if(online_ajax.readyState==4&&online_ajax.status==200)
{//alert(online_ajax.responseText);
var
message=online_ajax.responseText;
if((online_ajax.responseText.indexOf("noone"))!=-1)
{
getId('div_online').innerHTML="";
//顯示在線用戶
getId('online').innerHTML="在線人數(shù):0";
}
else
{
var
arrtemp=message.split("|");
getId('div_online').innerHTML=arrtemp[1];
getId('online').innerHTML=arrtemp[0];
}
}
}
online_ajax.send("action=keep");
}Javascript獲取在線人數(shù)的代碼5.3.4歷史記錄模塊歷史記錄模塊主要是實現(xiàn)查看用戶歷史的對話,能夠更具記錄回憶之前的對話主題,方便下一次繼續(xù)本話題。查看歷史記錄的界面如圖5.4所示:圖5.4歷史記錄頁面查看歷史記錄的核心代碼:
$PageSize
=
35;
//
每頁數(shù)量
//
獲取總數(shù)據(jù)量
$sql
=
sprintf("select
COUNT(*)
from
chat_mess
where
user_from='%s'
or
user_from='1'
or
user_to='%s'
order
by
id
asc",$username,$username);
$result
=
mysql_query($sql,$conn)
or
die(mysql_error());
$row
=
mysql_fetch_array($result);
$amount
=
$row[0];
//
記算總共有多少頁
if(
$amount
)
{
if(
$amount
<=$PageSize
)
{
//如果總數(shù)據(jù)量小于$PageSize,那么只有一頁
$page_count
=
1;
}
if(
$amount
%
$PageSize
)
{
//取總數(shù)據(jù)量除以每頁數(shù)的余數(shù)
$page_count
=
(int)($amount
/
$PageSize)
+
1;
//如果有余數(shù),則頁數(shù)等于總數(shù)據(jù)量除以每頁數(shù)的結果取整再加一
}
else
{
$page_count
=
$amount
/
$PageSize;
//如果沒有余數(shù),則頁數(shù)等于總數(shù)據(jù)量除以每頁數(shù)的結果
}
}
else
{
$page_count
=
0;
}
if($page>$page_count)
{
$=1;
}
$startRow_chat_mess=1;
if(isset($_GET['start']))
{
$startRow_chat_mess=$_GET['start'];
}
//
獲取數(shù)據(jù),以二維數(shù)組格式返回結果
if(
$amount
)
{
$sql=sprintf("select
*
from
chat_mess
where
user_from='%s'
or
user_from='1'
or
user_to='%s'
order
by
id
asc",$username,$username);
$lines=
mysql_query($sql,$conn);
$rows=mysql_num_rows($lines);
}
//數(shù)據(jù)的結果是二維數(shù)組,最終生成HTML代碼顯示到屏幕刪除歷史記錄的界面如圖5.5所示:圖5.5刪除歷史記錄刪除歷史記錄的核心代碼:<script
language="javascript"
type="text/javascript">
function
confir()
{
if(!confirm("您確定要刪除嗎?"))
return
false;
}
function
gogo()
{
var
p=form1.page.value;
var
username=myform.username.value;
window.location.replace("dele_history.php?page="+p);
}
function
checkAll(name)
{
//全選
var
el
=
document.getElementsByTagName('input');
var
len
=
el.length;
for(var
i=0;
i<len;
i++)
{
if((el[i].type=="checkbox")
&&
(el[i].name==name))
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 28773-2024齒楔帶
- 《地下工程施工》大學筆記
- 平?jīng)鍪修r(nóng)村飲水安全工程可行性分析報告28113
- 2024年10版小學英語第5單元真題試卷
- 文學文化常識(測試)-2023年中考語文一輪復習(原卷版)
- 2024年移動通訊手機配套集成電路項目投資申請報告代可行性研究報告
- 2024年節(jié)能型電冰箱、空調(diào)器項目資金籌措計劃書代可行性研究報告
- 2024年免疫調(diào)節(jié)藥物項目資金申請報告代可行性研究報告
- 詩詞曲閱讀(原卷版)-2025年中考語文復習專練
- 規(guī)劃科工作計劃模板8篇
- 國開(甘肅)2024年春《地域文化(專)》形考任務1-4終考答案
- “一戶一表”改造工程施工組織方案
- 大型及分布式光伏電站視頻監(jiān)控典型配置方案V1.0
- 《十字繡》教學設計及反思
- 橋梁形象進度圖
- C站使用說明JRC
- 習作:推薦一個好地方 推薦ppt課件
- 角的度量 華應龍(課堂PPT)
- 公路銑刨機整機的設計含全套CAD圖紙
- 機器人學課程教學大綱
- 浙江世貿(mào)君瀾酒店集團介紹
評論
0/150
提交評論