基于PHP實現(xiàn)的網(wǎng)上留言管理系統(tǒng)的設(shè)計—計算機畢業(yè)設(shè)計(論文)_第1頁
基于PHP實現(xiàn)的網(wǎng)上留言管理系統(tǒng)的設(shè)計—計算機畢業(yè)設(shè)計(論文)_第2頁
基于PHP實現(xiàn)的網(wǎng)上留言管理系統(tǒng)的設(shè)計—計算機畢業(yè)設(shè)計(論文)_第3頁
基于PHP實現(xiàn)的網(wǎng)上留言管理系統(tǒng)的設(shè)計—計算機畢業(yè)設(shè)計(論文)_第4頁
基于PHP實現(xiàn)的網(wǎng)上留言管理系統(tǒng)的設(shè)計—計算機畢業(yè)設(shè)計(論文)_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、畢畢 業(yè)業(yè) 設(shè)設(shè) 計計( 論論 文文) 基于基于 phpphp 實現(xiàn)的網(wǎng)上留言管理系統(tǒng)的設(shè)計實現(xiàn)的網(wǎng)上留言管理系統(tǒng)的設(shè)計 論論文作者姓名:文作者姓名: 申申請請學(xué)位學(xué)位專業(yè)專業(yè): : 申申請請學(xué)位學(xué)位類別類別: : 指指導(dǎo)導(dǎo)教教師師姓姓名名( (職職稱稱) ): : 論論文提交日期:文提交日期: 基于基于 phpphp 實現(xiàn)的網(wǎng)上留言管理系統(tǒng)的設(shè)計實現(xiàn)的網(wǎng)上留言管理系統(tǒng)的設(shè)計 摘摘 要要 隨著互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,網(wǎng)絡(luò)已經(jīng)充斥到我們生活的方方面面,網(wǎng)上 留言系統(tǒng)已經(jīng)成為各種網(wǎng)站不可或缺的一個組成部分。一個設(shè)計美觀、功能完 善的網(wǎng)上留言系統(tǒng)是網(wǎng)站吸引網(wǎng)民的一個重要因素。同時,它還為網(wǎng)絡(luò)用戶提 供

2、了一個多人參與的信息交流平臺?;?php 實現(xiàn)的網(wǎng)上留言管理系統(tǒng)采用 bs(browserserver)應(yīng)用架構(gòu)以及 mvc(model view controller)編程 架構(gòu)設(shè)計開發(fā)。具體的開發(fā)細節(jié)是使用 php 語言完成系統(tǒng)的開發(fā)。整個系統(tǒng)不 僅能夠?qū)W(wǎng)上留言信息進行錄入、發(fā)布、查詢與管理,而且還增加了如:驗證 碼、郵件發(fā)送、聊天室、密碼管理等功能。這樣使得網(wǎng)上留言系統(tǒng)真正成為功 能豐富、高效實用的網(wǎng)上信息交流平臺。 關(guān)鍵詞關(guān)鍵詞:php;bs;mvc;面向?qū)ο螅涣粞韵到y(tǒng) design of message board system based on php abstract wit

3、h the rapid development of the internet technology, the network application has been widely used in the world, the message board system already becomes an indispensable constituent of the website. a message board system which has beautiful designs and integrated functions can be an important factor

4、of attracting people. meanwhile, it provides internet users with an information exchange platform. the design of message board system based on php is developed by b/s(browser/server) application construction and mvc(model view controller) programming construction. the detail of the development is us

5、ing the php language to develop the system. the whole system not only can input, issue, query and manage the on-line message but also adds some functions such as validating code, mail transmission, chatting room or password management. this makes the message board system truly be a multifunctional a

6、nd efficient on-line information exchange platform. key words: php; b/s; mvc; object oriented; message board system 目目 錄錄 論文總頁數(shù):20 頁 1引言.1 1.1課題背景.1 1.2本課題研究的意義.1 1.3本課題的研究方法.1 2留言系統(tǒng)開發(fā)語言的介紹.1 2.1php 語言概述 .1 2.2php 對 mysql 數(shù)據(jù)庫的訪問 .2 2.3javascript語言概述.2 3留言系統(tǒng)開發(fā)架構(gòu)的介紹.3 3.1bs 應(yīng)用架構(gòu)的介紹 .3 3.1.1bs 架構(gòu)概述 .3

7、3.1.2bs 架構(gòu)的優(yōu)點 .3 3.1.3bs 架構(gòu)的缺點 .4 3.2mvc 編程架構(gòu)的介紹 .5 3.2.1mvc 架構(gòu)概述 .5 3.2.2mvc 架構(gòu)的優(yōu)點 .6 3.2.3mvc 架構(gòu)的缺點 .7 4基于 php 的網(wǎng)上留言管理系統(tǒng)的設(shè)計與實現(xiàn).7 4.1功能的確定.7 4.2數(shù)據(jù)表的設(shè)計.8 4.3添加功能與管理功能的設(shè)計與實現(xiàn).9 4.3.1設(shè)計方案的介紹.9 4.3.2各部分實現(xiàn)過程的介紹.10 4.4發(fā)布功能的設(shè)計與實現(xiàn).14 4.5特色功能的設(shè)計與實現(xiàn).16 結(jié) 論.18 參考文獻.18 致 謝.19 聲 明.20 1 1引言引言 1.11.1 課題背景課題背景 隨著互聯(lián)

8、網(wǎng)技術(shù)的迅猛發(fā)展,網(wǎng)絡(luò)給人們帶來了很多便利,我們在很多網(wǎng) 站上都能看到各式各樣的留言板,它是網(wǎng)站與訪客之間進行交流的主要手段之 一。一個設(shè)計合理,界面優(yōu)美的網(wǎng)上留言程序能從側(cè)面體現(xiàn)網(wǎng)站良好的服務(wù), 給來訪用戶留下美好的印象,增強用戶對網(wǎng)站的信心。 1.21.2 本課題研究的意義本課題研究的意義 網(wǎng)上留言系統(tǒng)利用網(wǎng)絡(luò)一定的時效性和廣泛的傳播面,可以方便人與人之 間的信息交流和互動。對于一般企業(yè)而言,網(wǎng)上留言系統(tǒng)能夠通過網(wǎng)絡(luò)提供方 便的日常信息管理和交互,同時只需要相對低廉的建設(shè)和維護成本。另外,企 業(yè)還可以通過網(wǎng)上留言系統(tǒng),為客戶提供一個跨地域的交流平臺,以便及時了 解和掌握客戶的需求,加強企業(yè)

9、與客戶之間的溝通,提高企業(yè)的市場競爭力。 因此,該課題具有一定的實用價值。 1.31.3 本課題的研究方法本課題的研究方法 網(wǎng)上留言系統(tǒng)的整體結(jié)構(gòu)采用的是 bs(browserserver)應(yīng)用架構(gòu), 在這種架構(gòu)下,軟件應(yīng)用的業(yè)務(wù)邏輯完全在應(yīng)用服務(wù)器端實現(xiàn),用戶表現(xiàn)完全 在 web 服務(wù)器實現(xiàn),客戶端只需要瀏覽器即可進行業(yè)務(wù)處理。整個系統(tǒng)的設(shè)計 采用的是 mvc(model view controller)編程架構(gòu),使得功能模塊和顯示模塊 能夠分離,提高應(yīng)用系統(tǒng)的可維護性、可擴展性、可移植性和組件的可復(fù)用性。 留言系統(tǒng)的具體實現(xiàn)是采用服務(wù)器端腳本語言 php 來完成對系統(tǒng)后臺的開發(fā)以 及使用

10、html 語言和 javascript 腳本語言來完成對系統(tǒng)前臺的開發(fā)。 2 2留言系統(tǒng)開發(fā)語言的介紹留言系統(tǒng)開發(fā)語言的介紹 2.12.1 phpphp 語言概述語言概述 php是能讓你生成動態(tài)網(wǎng)頁的工具之一。php代表:超文本預(yù)處理器 (php:hypertext preprocessor) 。php是完全免費的,不用花錢,你可以從 php官方站點自由下載。php遵守gnu公共許可(gpl) ,在這一許可下誕生了許多 流行的軟件諸如linux和emacs。你可以不受限制的獲得源碼,甚至可以從中加 進你自己需要的特色。php在大多數(shù)unix平臺,gunlinux和微軟windows平臺 上均可

11、以運行。php很容易學(xué)習(xí),但是速度上比modperl(植入web服務(wù)器的 perl模塊)慢?,F(xiàn)在有了可以與modperl速度想媲美的被稱作zend的新引擎, 而php5就可以充分利用這個引擎。php5還引入了新的對象模型(object model) 。 完全重寫了php處理對象的方式,這樣可以提高程序的抽象程度,更接近人的思 維方式,使程序結(jié)構(gòu)更清晰并降低編碼和維護的工作量。當前php與 linux、apache、mysql、zend構(gòu)成了性價比最高的web系統(tǒng)。 應(yīng)用php有許多好處。當然已知的不利之處在于php由于是開放源碼項目, 沒有什么商業(yè)支持,對于小項目,它可以是一個十分符合人意的編

12、程語言。但 是對于較大的和更為復(fù)雜的項目,php就顯出他的薄弱了。php是一個不斷發(fā)展 的語言,相信這些問題在不久的將來會得到很好地解決。 2.22.2 phpphp 對對 mysqlmysql 數(shù)據(jù)庫數(shù)據(jù)庫的訪問的訪問 mysql 是一個快速、健壯和易用,且支持多線程、多用戶的 sql 數(shù)據(jù)庫服 務(wù)器。雖然 php 通過 odbc 支持幾乎所有的數(shù)據(jù)庫。但對于開發(fā)數(shù)據(jù)驅(qū)動的網(wǎng)站 而言,選擇 mysql 應(yīng)該說是最佳組合,這不僅因為 mysql 是免費的,更在于它 具有與同類大型數(shù)據(jù)庫相媲美甚至超過它們的優(yōu)良性能。php 實現(xiàn)對 mysql 數(shù) 據(jù)庫的訪問有兩種方法: (1)利用 php 的數(shù)

13、據(jù)庫函數(shù)連接: 創(chuàng)建 mysql 連接:mysql_connect(數(shù)據(jù)庫所在位置,數(shù)據(jù)庫賬號,數(shù)據(jù)庫密 碼)。 數(shù)據(jù)庫選用:mysql_select_db(數(shù)據(jù)庫名)。 執(zhí)行 sql 指令:mysql_query(sql 語句,$link)。 分析表身:mysql_fetch_row()函數(shù),必須傳入$result 查詢結(jié)果變量,再 通過 for 循環(huán),并配合 count()函數(shù)計算數(shù)據(jù)行中的列數(shù),將$row 數(shù)組中每一 元素顯示出來。 釋放資源:mysql_free_result($result)或 mysql_close($link)。 (2)通過 odbc 連接: php 通過 odb

14、c 連接 mysql 數(shù)據(jù)庫主要用到四個函數(shù): odbc_connect():用來同 odbc 數(shù)據(jù)源建立連接。 odbc_do():用來在建立連接之后執(zhí)行數(shù)據(jù)庫查詢。 odbc_result():用于取得當前記錄行中某個字段的值。 odbc_fetch_row():用來把查詢結(jié)果保存到數(shù)組,每個數(shù)組元素對應(yīng)一條 記錄。 上述兩種方法在與數(shù)據(jù)庫建立連接的語法上,并沒有太大差別。不過在相 比較之下,通過 odbc 方式存取數(shù)據(jù)庫比 php 直接存取 mysql 耗時間,但通過 odbc 接口存取數(shù)據(jù)庫不必擔心使用何種數(shù)據(jù)庫,如 oracle,informix,sybase 等。結(jié)合網(wǎng)上留言系統(tǒng)在

15、實際當中的應(yīng)用,還是決定選擇 php 直接存取 mysql 的方式來管理數(shù)據(jù)庫。另外以上兩種方式都支持 odbc 接口,這樣可減少更換數(shù) 據(jù)庫時需要更改程序的問題。 2.32.3 javascriptjavascript 語言概述語言概述 javascript 是一種基于對象(object)和事件驅(qū)動(event driven)并具 有安全性能的腳本語言。使用它的目的是與 html 超文本標記語言、php 腳本語 言一起實現(xiàn)在一個 web 頁面中鏈接多個對象,與 web 客戶交互作用,從而可以 開發(fā)客戶端的應(yīng)用程序等。它是通過嵌入或調(diào)入在標準的 html 語言中實現(xiàn)的。 它的出現(xiàn)彌補了 htm

16、l 語言的缺陷。 javascript 的出現(xiàn)使得信息和用戶之間不僅只是一種顯示和瀏覽的關(guān)系, 而是實現(xiàn)了一種實時的、動態(tài)的、可交式的表達能力。從而基于 cgi 靜態(tài)的 html 頁面將被可提供動態(tài)實時信息,并對客戶操作進行反應(yīng)的 web 頁面的取代。 javascript 腳本正是滿足這種需求而產(chǎn)生的語言。它深受廣大用戶的喜愛。它 是眾多腳本語言中較為優(yōu)秀的一種,與 www 的結(jié)合有效地實現(xiàn)了網(wǎng)絡(luò)計算和網(wǎng) 絡(luò)計算機的結(jié)合。 使用 javascript 的優(yōu)勢在于傳統(tǒng)的數(shù)據(jù)提交和驗證工作均由用戶端瀏覽器 通過網(wǎng)絡(luò)傳輸?shù)椒?wù)器上進行。如果數(shù)據(jù)量很大,這對于網(wǎng)絡(luò)和服務(wù)器的資源 來說實在是一種無形的

17、浪費。而 javascript 則可以在客戶端進行數(shù)據(jù)驗證,可 以方便地操縱各種瀏覽器的對象,可以控制瀏覽器的外觀,狀態(tài)甚至運行方式, 可以根據(jù)用戶的需要“定制”瀏覽器,從而使網(wǎng)頁更加友好。javascript 還可 以使多種任務(wù)僅在客戶端就可以完成而不需要網(wǎng)絡(luò)和服務(wù)器的參與,從而支持 分布式的運算和處理。 3 3留言系統(tǒng)開發(fā)架構(gòu)的介紹留言系統(tǒng)開發(fā)架構(gòu)的介紹 3.13.1 b bs s 應(yīng)用架構(gòu)的介紹應(yīng)用架構(gòu)的介紹 .1b bs s 架構(gòu)概述架構(gòu)概述 bs(browserserver)結(jié)構(gòu)即瀏覽器和服務(wù)器結(jié)構(gòu)。它是隨著 internet 技術(shù)的興起,對 cs(clientser

18、ver)結(jié)構(gòu)的一種變化或者改進的結(jié)構(gòu)。在 這種結(jié)構(gòu)下,用戶工作界面是通過 www 瀏覽器來實現(xiàn),極少部分事務(wù)邏輯在前 端(browser)實現(xiàn),主要的事務(wù)邏輯在服務(wù)器端(server)實現(xiàn),形成所謂三 層 3tier 結(jié)構(gòu)。這樣就大大簡化了客戶端電腦負荷,減輕了系統(tǒng)維護與升級 的成本和工作量,降低了用戶的總體成本。 以目前的技術(shù)看,局域網(wǎng)建立 bs 結(jié)構(gòu)的網(wǎng)絡(luò)應(yīng)用,并通過 internetintranet 模式下建立的數(shù)據(jù)庫應(yīng)用,相對易于把握,成本也是較低 的。bs 結(jié)構(gòu)是一次性到位的開發(fā),能實現(xiàn)不同的人員,從不同的地點,以不 同的接入方式(比如 lan,wan,internetintrane

19、t 等)訪問和操作共同的數(shù) 據(jù)庫;它能有效地保護數(shù)據(jù)平臺和管理訪問權(quán)限,服務(wù)器數(shù)據(jù)庫也很安全。特 別是在 php 這樣的跨平臺語言出現(xiàn)之后,bs 架構(gòu)管理軟件更是方便、快捷、 高效。 .2 b bs s 架構(gòu)的優(yōu)點架構(gòu)的優(yōu)點 bs 結(jié)構(gòu)最大的優(yōu)點就是可以在任何地方進行操作而不用安裝任何專門的 軟件。只要有一臺能上網(wǎng)的電腦就能使用,客戶端零維護。系統(tǒng)的擴展非常容 易,只要能上網(wǎng),再由系統(tǒng)管理員分配一個用戶名和密碼,就可以使用了。甚 至可以在線申請,通過公司內(nèi)部的安全認證(如證書)后,不需要人的參 與,系統(tǒng)可以自動分配給用戶一個賬號進入系統(tǒng)。 其次是維護和升級方式簡單。目前,軟件系

20、統(tǒng)的改進和升級越來越頻繁, bs 架構(gòu)的產(chǎn)品明顯體現(xiàn)著更為方便的特性。對一個稍微大一點的單位來說, 系統(tǒng)管理人員如果需要在幾百甚至上千部電腦之間來回奔跑,效率和工作量是 可想而知的,但 bs 架構(gòu)的軟件只需要管理服務(wù)器就行了,所有的客戶端只是 瀏覽器,根本不需要做任何的維護。無論用戶的規(guī)模有多大,有多少分支機構(gòu) 都不會增加任何維護升級的工作量,所有的操作只需要針對服務(wù)器進行;如果 是異地,只需要把服務(wù)器連接專網(wǎng)即可,實現(xiàn)遠程維護、升級和共享。所以客 戶機越來越“瘦” ,而服務(wù)器越來越“胖”是將來信息化發(fā)展的主流方向。今后, 軟件升級和維護會越來越容易,而使用起來會越來越簡單,這對用戶人力、物

21、力、時間、費用的節(jié)省是顯而易見的,驚人的。因此,維護和升級革命的方式 是“瘦”客戶機, “胖”服務(wù)器。 最后是成本降低,選擇更多。大家都知道 windows 在桌面電腦上幾乎一統(tǒng) 天下,瀏覽器成為了標準配置,但在服務(wù)器操作系統(tǒng)上 windows 并不是處于絕 對的統(tǒng)治地位?,F(xiàn)在的趨勢是凡使用 bs 架構(gòu)的應(yīng)用管理軟件,只需安裝在 linux 服務(wù)器上即可,而且安全性高。所以服務(wù)器操作系統(tǒng)的選擇是很多的, 不管選用哪種操作系統(tǒng)都可以讓大部分人使用 windows 作為桌面操作系統(tǒng)的電 腦不受影響,這就使得最流行 linux 操作系統(tǒng)快速發(fā)展起來,linux 除了操作 系統(tǒng)是免費的以外,連數(shù)據(jù)庫也

22、是免費的,這種選擇是非常盛行的。 比如說很多人每天上“新浪”網(wǎng),只要安裝了瀏覽器就可以了,并不需要 了解“新浪”的服務(wù)器用的是什么操作系統(tǒng),而事實上大部分網(wǎng)站服務(wù)器是沒 有使用 windows 操作系統(tǒng)的,但用戶的電腦本身安裝的大部分是 windows 操作 系統(tǒng)。 .3 b bs s 架構(gòu)的缺點架構(gòu)的缺點 應(yīng)用服務(wù)器運行數(shù)據(jù)負荷較重是 bs 架構(gòu)的缺點。由于 bs 架構(gòu)管理軟 件只安裝在服務(wù)器端(server)上,網(wǎng)絡(luò)管理人員只需要管理服務(wù)器就行了, 用戶界面主要事務(wù)邏輯在服務(wù)器(server)端完全通過 www 瀏覽器實現(xiàn),極少 部分事務(wù)邏輯在前端(browser)實現(xiàn),所

23、有的客戶端只有瀏覽器,網(wǎng)絡(luò)管理人 員只需要做硬件維護。但是,應(yīng)用服務(wù)器運行數(shù)據(jù)負荷較重,一旦發(fā)生服務(wù)器 “崩潰”等問題,后果不堪設(shè)想。因此,許多單位都備有數(shù)據(jù)庫存儲服務(wù)器, 以防萬一。 3.23.2 mvcmvc 編程架構(gòu)的介紹編程架構(gòu)的介紹 .1 mvcmvc 架構(gòu)概述架構(gòu)概述 mvc 英文即 model,view,controller,即把一個應(yīng)用的輸入、處理、輸出 流程按照 model,view,controller 的方式進行分離,這樣一個應(yīng)用層被分為 三個層模型層,視圖層、控制層。 視圖(view)代表用戶交互界面,對于 web 來說,可以概括為 html 界面, 但

24、也有可能為 xhtml、xml、applet 和 flash 等。隨著應(yīng)用的復(fù)雜性和規(guī)模性的 提高,界面的處理也變得具有挑戰(zhàn)性,一個應(yīng)用可能有很多不同的視圖,mvc 設(shè)計模式對于視圖的處理僅限于視圖上數(shù)據(jù)的采集和處理,以及用戶的請求, 而不包括在視圖上的業(yè)務(wù)流程的處理。業(yè)務(wù)流程的處理交予模型(model)處理。 比如一個訂單的視圖只接受來自模型的數(shù)據(jù)并顯示給用戶,以及將用戶界面的 輸入數(shù)據(jù)和請求傳遞給 controller 和 model。 模型(model)就是業(yè)務(wù)流程和狀態(tài)的處理以及業(yè)務(wù)規(guī)則的制定。業(yè)務(wù)流程 的處理過程對其他層來說是暗箱操作,模型接受視圖請求的數(shù)據(jù),并返回最終 的處理結(jié)果。

25、業(yè)務(wù)模型的設(shè)計可以說是 mvc 最主要的核心。目前流行的 ejb 模 型就是一個典型的應(yīng)用例子,它從應(yīng)用技術(shù)實現(xiàn)的角度對模型作了進一步的劃 分,以便充分利用現(xiàn)有的組件,但它不能作為應(yīng)用設(shè)計模型的框架。它僅僅告 訴你按照模型設(shè)計就可以利用某些技術(shù)組件,從而減輕了技術(shù)上的困難。對一 個開者來說,就可以專注于業(yè)務(wù)模型的設(shè)計。mvc 設(shè)計模型告訴我們,把應(yīng)用 的模型按照一定的規(guī)劃抽取出來,抽取的層次很重要,這也是判斷開發(fā)人員是 否優(yōu)秀的設(shè)計依據(jù)。抽象與具體不能隔得太遠,也不能太近。mvc 并沒有提供 模型的設(shè)計方法,而只告訴你應(yīng)該組織管理這些模型,以便于模型的重構(gòu)和提 高重用性。 業(yè)務(wù)模型還有一個很重

26、要的模型那就是數(shù)據(jù)模型。數(shù)據(jù)模型主要是指實體 對象的數(shù)據(jù)保存。比如將一張訂單保存到數(shù)據(jù)庫中,從數(shù)據(jù)庫獲取訂單。我們 可以將這個模型單獨列出,所有有關(guān)的數(shù)據(jù)庫的操作只限在該模型中。 控制(controller)可以理解為從用戶接受請求,將模型與視圖匹配在一 起,共同完成用戶的請求,劃分控制層的作用很明顯,它清楚地告訴開發(fā)者, 它僅是一個分發(fā)器,選擇什么樣的模型,選擇什么樣的視圖,可以完成什么樣 的用戶請求??刂茖硬蛔魅魏蔚臄?shù)據(jù)處理。例如,用戶點擊一個鏈接,控制層 接收請求后,并不處理業(yè)務(wù)信息,它只把用戶的信息傳遞給模型,告訴模型做 什么,把符合要求的視圖返回給用戶。因此,一個模型可能對應(yīng)多個視圖

27、,一 個視圖可能對應(yīng)多個模型。 總之,模型、視圖與控制器的分離,使得一個模型可以具有多個顯示視圖。 如果用戶通過某個視圖的控制器改變了模型的數(shù)據(jù),所有其他依賴于這些數(shù)據(jù) 的視圖都能反映這些變化。因此,無論何時發(fā)生了何種數(shù)據(jù)變化,控制器都會 將變化通知所有的視圖,導(dǎo)致顯示的更新。這實際上是一種模型的變化與傳播 機制。模型、視圖、控制器三者之間的關(guān)系和各自的主要功能,如下圖(圖 1)所示: 圖 1 模型、視圖、控制器的關(guān)系和功能 .2 mvcmvc 架構(gòu)的優(yōu)點架構(gòu)的優(yōu)點 當前有相當一部分 web 應(yīng)用程序都是用過程化語言來創(chuàng)建的。它們將像數(shù) 據(jù)庫查詢語句這樣的數(shù)據(jù)層代碼和像 htm

28、l 這樣的表示層代碼混在一起,直接向 數(shù)據(jù)庫發(fā)送請求并用 html 顯示,開發(fā)速度往往比較快,但由于數(shù)據(jù)頁面的分離 不是很直接,因而很難體現(xiàn)出業(yè)務(wù)模型的樣子或者模型的重用性。產(chǎn)品設(shè)計彈 性力度很小,很難滿足用戶的變化性需求。經(jīng)驗比較豐富的開發(fā)者會將數(shù)據(jù)從 表示層分離開來,但這通常不是很容易做到的,它需要精心的計劃和不斷的嘗 試。mvc 的出現(xiàn)很好地解決了以上問題,它要求對應(yīng)用分層,雖然要花費額外 的工作,但產(chǎn)品的結(jié)構(gòu)清晰,產(chǎn)品的應(yīng)用通過模型可以得到更好地體現(xiàn)。 首先,mvc 最重要的一點是多個視圖能共享一個模型。在目前用戶需求的 快速變化下,可能有多種方式訪問應(yīng)用的要求。例如,訂單模型可能有本

29、系統(tǒng) 的訂單,也有網(wǎng)上訂單,或者其他系統(tǒng)的訂單,但對于訂單的處理都是一樣, 也就是說訂單的處理是一致的。按 mvc 設(shè)計模式,一個訂單模型以及多個視圖 即可解決問題。這樣即減少了代碼的復(fù)制,又減少了代碼的維護量,一旦模型 發(fā)生改變,也易于維護。并且由于模型返回的數(shù)據(jù)不帶任何顯示格式,因而這 些模型也可直接應(yīng)用于接口的使用。 其次,將 mvc 分離可以讓不同的專家負責不同的模塊,一般情況下,model 部分由熟悉數(shù)據(jù)庫,網(wǎng)絡(luò)傳輸?shù)膶<襾碡撠?;view 則交給對 ui(user interface)有研究的專家。這對于項目的管理者而言是多么的誘人,分工意味 著可以提高效率并可以按照傳統(tǒng)的責任劃分來

30、處理軟件開發(fā)過程。對開發(fā)者而 言也可以專心于一個領(lǐng)域。這樣做的前提是接口要明確,mvc 的分離思想正為 其提供了基礎(chǔ)。 最后,控制器也提供了一個好處,就是可以使用控制器來連接不同的模型 和視圖去完成用戶的需求,這樣控制器可以為構(gòu)造應(yīng)用程序提供強有力的手段。 給定一些可重用的模型和視圖,控制器可以根據(jù)用戶的需求選擇模型進行處理, 然后選擇視圖將處理結(jié)果顯示給用戶??偟膩碚f mvc 編程架構(gòu)是有利于軟件工 程化管理的,因為不同的層各司其職,每一層不同的應(yīng)用具有某些相同的特征, 有利于通過工程化、工具化產(chǎn)生管理程序代碼。 .3 mvcmvc 架構(gòu)的缺點架構(gòu)的缺點 mvc 的缺點是由于

31、它沒有明確的定義,所以完全理解 mvc 并不是很容易。 使用 mvc 需要精心的計劃,由于它的內(nèi)部原理比較復(fù)雜,所以需要花費一些時 間去思考。具體的不足體現(xiàn)在以下幾個方面: (1)增加了系統(tǒng)結(jié)構(gòu)和實現(xiàn)的復(fù)雜性。對于簡單的界面,嚴格遵循 mvc, 使模型、視圖與控制器分離,會增加結(jié)構(gòu)的復(fù)雜性,并可能產(chǎn)生過多的更新操 作,降低運行效率。 (2)視圖與控制器間的連接過于緊密。視圖與控制器是相互分離,但卻是 聯(lián)系緊密的部件,視圖沒有控制器的存在,其應(yīng)用是很有限的,反之亦然,這 樣就妨礙了它們的獨立重用。 (3)視圖對模型數(shù)據(jù)的低效率訪問。依據(jù)模型操作接口的不同,視圖可能 需要多次調(diào)用才能獲得足夠的顯示

32、數(shù)據(jù)。對未變化數(shù)據(jù)的不必要的頻繁訪問, 也將損害操作性能。 另外,你還將不得不花費相當可觀的時間去考慮如何將 mvc 運用到你的應(yīng) 用程序,同時由于模型和視圖要嚴格的分離,這樣也給調(diào)試應(yīng)用程序到來了一 定的困難。每個構(gòu)件在使用之前都需要經(jīng)過徹底的測試。一旦你的構(gòu)件經(jīng)過了 測試,你就可以毫無顧忌的重用它們了。 最后,根據(jù)開發(fā)者經(jīng)驗,由于開發(fā)者將一個應(yīng)用程序分成了三個部件,所 以使用 mvc 同時也意味著你將要管理比以前更多的文件,這一點是顯而易見的。 這樣好像我們的工作量增加了,但是請記住這比起它所能帶給我們的好處是不 值一提的。并且本系統(tǒng)也針對這些缺點做了一些改進,下面就將介紹系統(tǒng)詳細 的設(shè)計

33、開發(fā)過程。 4 4基于基于 phpphp 的網(wǎng)上留言管理系統(tǒng)的網(wǎng)上留言管理系統(tǒng)的設(shè)計與實現(xiàn)的設(shè)計與實現(xiàn) 4.14.1 功能的確定功能的確定 網(wǎng)上留言管理系統(tǒng)把用戶分成兩類,一類是管理員,另一類是客戶。管理 員負責維護整個留言系統(tǒng),在對其身份進行確認后,能夠?qū)W(wǎng)上留言進行回復(fù)、 修改以及刪除。客戶則可以直接錄入、查看和查詢網(wǎng)上留言信息。具體要實現(xiàn) 的內(nèi)容如表 1 所示: 表 1 系統(tǒng)詳細功能介紹 添加功能 支持心情圖片插入 支持輸入內(nèi)容時插入圖片 用戶基本信息以及留言內(nèi)容的錄入 選擇留言信息正常顯示或僅管理員可見 選擇管理員回復(fù)是否另外發(fā)送 email 給自己 發(fā)布功能 顯示留言者 ip 顯示滾

34、動的系統(tǒng)公告 顯示留言以及回復(fù)信息 屏蔽只有管理員可見的留言信息 顯示頁面處理時間以及 php 運行時間 支持標題搜索,數(shù)據(jù)庫對標題建有索引 管理功能 支持在線公告修改 支持批量刪除數(shù)據(jù) 支持回復(fù),編輯,刪除留言信息 管理員信息經(jīng)過 md5 加密,只能在線修改用戶名和密碼 特色功能 聊天室,實時的信息交流平臺 建立 socket 會話,根據(jù) smtp 協(xié)議發(fā)送郵件 可在無 gd 庫的空間中正常運行的驗證碼功能 運用大量 php 和 javascript 函數(shù)繪制網(wǎng)頁特效 4.24.2 數(shù)據(jù)表的設(shè)計數(shù)據(jù)表的設(shè)計 在著手開發(fā)一個 web 項目時,數(shù)據(jù)庫的設(shè)計通常是第一位要做的,基本上 所有的操作都

35、會涉及到數(shù)據(jù)表的操作。那么數(shù)據(jù)表的設(shè)計就關(guān)系到整個項目的 設(shè)計和功能的實現(xiàn)。網(wǎng)上留言信息需要一個表來存儲,另外聊天室也需要一個 表來存儲信息,因此整個系統(tǒng)需要兩個表,具體設(shè)計如表 2、表 3 所示: 表 2 留言信息存儲表 字段名類型說明 idint(6) primry key留言 id tnamevarchar(6)留言者姓名 txint(3)頭像 dtimedatetime留言時間 titlevarchar(33)留言標題 qqint(13)留言者 qq emailvarchar(25)留言者 email neitext留言內(nèi)容 htimedatetime回復(fù)時間 estateint(1)

36、留言狀態(tài) hneitext回復(fù)內(nèi)容 ipvarchar(15)留言者 ip send_mailbool是否接收回復(fù)郵件 表 3 聊天室信息存儲表 字段名類型說明 chtimedatetime信息發(fā)布時間 nickvarchar(10)用戶名稱 wordsvarchar(100)聊天內(nèi)容 4.34.3 添加功能與管理功能的設(shè)計與實現(xiàn)添加功能與管理功能的設(shè)計與實現(xiàn) .1 設(shè)計方案的介紹設(shè)計方案的介紹 在前面的文章中已經(jīng)介紹了 mvc 編程架構(gòu)的特點,本系統(tǒng)的添加功能與管 理功能就是采用 mvc 編程架構(gòu)開發(fā)的。具體的系統(tǒng)結(jié)構(gòu)如圖 2 所示: 圖 2 添加與管理功能的 mvc 架構(gòu)

37、對添加與管理功能的設(shè)計選用的是類似 smart ticket 中使用的 mvc 模式。 這種模式的特點是將 controller 設(shè)計成一個巨大的事物處理器 (即:switchcase 語句) ,所有由 ui 收集到的用戶需求都轉(zhuǎn)發(fā)給 controller 進行處理。其具體的工作流程是這樣的:view 通過“url?變量名= 變量值”的方式向 controller 傳遞一個功能常量,controller 通過 php 系統(tǒng) 變量“$_get”接收到這個常量,然后將其放入 switchcase 語句中, switchcase 語句根據(jù)比較不同的常量,來處理不同的請求,從而完成不同 的功能。con

38、troller 主要是通過調(diào)用 model 內(nèi)的自定義函數(shù)、mysql 數(shù)據(jù)庫操 作類以及郵件發(fā)送類來處理不同的請求。 下面總結(jié)一下這個設(shè)計方案的優(yōu)點和缺點。從上文介紹的工作流程可以看 到這種模式的優(yōu)點是用戶控制器提供一個控制和處理請求的集中入口點,它負 責接收,截獲并處理用戶請求;并根據(jù)當前狀態(tài)和業(yè)務(wù)操作的結(jié)果決定向客戶 呈現(xiàn)的視圖。這樣做能夠控制和協(xié)調(diào)每個用戶跨越多個請求的處理,從而達到 了集中管理的目的。這種模式還具有多視圖對應(yīng)一個模型的能力,對多種不同 方式的訪問請求可以用一個模型來實現(xiàn),減少了代碼的重復(fù)和維護量,一旦模 型改變也易于維護。其次由于模型返回的數(shù)據(jù)不帶任何顯示格式,因而這

39、些模 型也可直接應(yīng)用于接口的使用。當然,這種模式也有一個缺陷,那就是隨著功 能的不斷增加 controller 將變得過于龐大,這樣將影響系統(tǒng)的運行速度,增加 用戶等待響應(yīng)的時間。但就本系統(tǒng)的功能而言,用 controller 來完成還是綽綽 有余的。 .2 各部分實現(xiàn)過程的介紹各部分實現(xiàn)過程的介紹 首先介紹 view 部分的實現(xiàn)過程。就添加功能而言設(shè)計了一個界面優(yōu)美的視 圖如圖 3 所示,用戶主要是通過填寫 html 表單完成個人信息以及留言信息的錄 入,這些數(shù)據(jù)通過 post 方式傳遞給 controller。另外還用 javascript 的 “document.gete

40、lementbyid()”函數(shù)在客戶端即時獲取用戶輸入的數(shù)據(jù),然后 再用 if 判斷語句檢查用戶輸入的數(shù)據(jù)是否標準,如果不標準系統(tǒng)就會通過 “document.getelementbyid(obj_name).innerhtml”變量顯示提示語句,明確 地告訴用戶如何輸入正確的數(shù)據(jù)。 圖 3 留言信息添加界面 就管理功能而言,將視圖分為兩級,一級是身份驗證界面,當用戶正確輸 入用戶名、密碼以及驗證碼之后才能進入下一級的管理界面。在管理界面中, 每一個功能都對應(yīng)了一個視圖,這樣方便了管理員區(qū)分和使用不同的功能。 接著介紹 controller 部分的實現(xiàn)過程。前文已經(jīng)介紹了 controller

41、 是通 過判斷視圖傳遞的功能常量來選擇相應(yīng)的功能,下面的表 4 就給出了不同常量 與不同功能的對應(yīng)關(guān)系: 表 4 常量與功能對應(yīng)表 常量功能 add添加數(shù)據(jù) edit編輯留言信息 huifu回復(fù)留言信息 del刪除留言信息 pldel批量刪除留言信息 admin確認管理員身份 editadmin在線修改管理員信息 editgonggao在線修改公告內(nèi)容 out管理員退出 就添加功能而言,controller 會接收到 view 傳遞的“add”功能常量,于 是 controller 會先通過 php 的系統(tǒng)變量“$_post”來接收用戶輸入的數(shù)據(jù),然 后再應(yīng)用 model 內(nèi)的自定義函數(shù)對用戶

42、輸入的數(shù)據(jù)進行鑒定和過濾,最后 controller 就調(diào)用 model 內(nèi)的數(shù)據(jù)庫操作類,通過使用對象的成員函數(shù)將數(shù)據(jù) 保存到數(shù)據(jù)庫里。在錄入數(shù)據(jù)的同時,用戶還可以選擇是否通過郵件接收管理 員回復(fù),以及所發(fā)的留言是正常顯示,還是僅管理員可見。 就管理功能而言,首先要明確的是身份認證的歸屬,它似乎是應(yīng)用邏輯的 一部分,因此是屬于 model。但是如果要限制只有通過驗證的用戶才能執(zhí)行特 定動作,那么這一要求只能由 controller 來完成,因為這些特定的動作必須在 controller 內(nèi)定義,而且只有 controller 可以進入 model,所以身份認證歸入 controller 才是

43、最合理的劃分。對身份驗證的安全性在 controller 內(nèi)采用了 雙保險:第一是使用 php 的系統(tǒng)函數(shù)“md5()”對管理員密碼進行加密,使得用 戶只能在網(wǎng)上修改管理員的用戶名和密碼;第二是使用特色功能里的驗證碼功 能來防止某些用戶采用暴力破解方式進行不斷的登陸嘗試。 當管理員成功登入系統(tǒng)后又面臨了一個問題,那就是網(wǎng)頁是一種無狀態(tài)的 連接程序,因此你無法得知用戶的瀏覽狀態(tài)。要解決這個問題就會用到 php 的 session 功能,我們通過 session 記錄用戶的有關(guān)信息,以供用戶再次以此身 份對 web 服務(wù)器提供要求時作確認。具體的實現(xiàn)是這樣的:當用戶進入網(wǎng)站我 們就調(diào)用“sessi

44、on_start()”函數(shù)打開一個會話期,當管理員成功登入系統(tǒng)后, 我們用“$_sessionadmin”這個全局變量保存下管理員密碼,那么服務(wù)器就 記錄下了管理員的信息,以后在使用其他功能時就不需要用戶輸入用戶名和密 碼了。當管理員退出系統(tǒng)時,我們可以使用“unset($_sessionadmin)”來銷 毀保存在服務(wù)器端的管理員信息。當然 session 也存在一些不足之處,如它會 占用少許服務(wù)器資源以及關(guān)閉瀏覽器即會失效。但換一種角度去思考, “關(guān)閉瀏 覽器即會失效”其實是從安全的角度設(shè)計的。在整個管理員的會話期里, controller 是通過 php 的系統(tǒng)變量“$_get”來接收管

45、理員選擇的功能常量, 然后再讓 switchcase 語句根據(jù)比較不同的常量,來處理不同的請求,從 而完成管理員要求的功能。 最后介紹 model 部分的實現(xiàn)過程。web 開發(fā)歸根結(jié)底就是與數(shù)據(jù)庫打交道, 對數(shù)據(jù)操作的封裝是最基本的,在設(shè)計時應(yīng)當充分考慮到未來的需要和可擴展 性,如果在開發(fā)業(yè)務(wù)邏輯模型期間再對數(shù)據(jù)操作的封裝進行修改,往往可能會 傷筋動骨,牽連的內(nèi)容會較多。本系統(tǒng)涉及的數(shù)據(jù)表比較單一,即每次操作主 要針對一個數(shù)據(jù)表。因此,在 model 內(nèi)使用 php 語言設(shè)計了一個通用的類,只 更換數(shù)據(jù)表即可完成對數(shù)據(jù)庫的操作。在這個類中,成員函數(shù)主要實現(xiàn)的功能 包括: (1)初始化成員變量;

46、 (2)連接數(shù)據(jù)庫; (3)執(zhí)行 sql 語句; (4)返回當前查尋數(shù)據(jù)的數(shù)據(jù)行數(shù); (5)返回數(shù)據(jù)總行數(shù); (6)讀取數(shù)據(jù); (7)關(guān)閉連接。 通過這個類就將系統(tǒng)對數(shù)據(jù)庫的操作封裝起來,方便 controller 的操作, 同時也使系統(tǒng)更安全了。 另外還設(shè)計了一個郵件發(fā)送類。開發(fā)這個類的目的在于滿足一些用戶希望 通過 email 接收管理員回復(fù)的要求。這個類支持兩種發(fā)送 email 的方法:第一 種,使用 php 自帶的“mail()”函數(shù)來發(fā)送;第二種,使用 smtp 協(xié)議的 socket 發(fā)送。由于 php 沒有提供現(xiàn)成的 smtp 函數(shù),只提供了一個功能不甚靈 活的“mail()”函數(shù)

47、,這個函數(shù)需要服務(wù)器配置上的支持,并且不支持 smtp 驗 證,在很多場合無法正常的工作,因此才開發(fā)了第二種發(fā)送 email 的方法來彌 補第一種方式的不足。第二種發(fā)送方式實際上是利用 php 的 socket 函數(shù)來和 smtp 服務(wù)器建立一個連接,然后發(fā)送文本的命令給服務(wù)器,一封內(nèi)容簡單的郵 件就發(fā)送出去了。第二種方式的好處在于 php 中已經(jīng)存在很多現(xiàn)成的封裝得很 好的類或者函數(shù)替我們完成底層的 socket 級操作,只需要直接拿來用就好,而 不用在本文里去討論底層的代碼。下面就給出通過 socket 發(fā)送 email 的具體實 現(xiàn)過程: (1)創(chuàng)建 sock,并打開連接; (2)設(shè)置為

48、阻塞模式; (3)測試 smtp 應(yīng)答碼是否為 220,220 代表郵件服務(wù)就緒; (4)發(fā)送用戶身份驗證,然后讀取服務(wù)器端發(fā)送給客戶端的返回數(shù)據(jù); (5)發(fā)送 auth login 命令; (6)發(fā)送用戶名以及密碼; (7)身份驗證成功過后,向服務(wù)器添加 from 以及 to; (8)發(fā)送 data 命令,開始輸入 email 數(shù)據(jù),以“.”號結(jié)束; (9)書寫郵件內(nèi)容,將郵件內(nèi)容發(fā)送到 smtp 服務(wù)器; (10)發(fā)送 quit 命令,結(jié)束會話。 在 model 中還包含了一個自定義函數(shù)文件,這些函數(shù)主要是被 controller 調(diào)用,起到對用戶輸入數(shù)據(jù)進行鑒定和過濾的作用。這些函數(shù)的具

49、體功能包括: (1)接收功能常量; (2)接收用戶在前臺輸入的數(shù)據(jù); (3)限制用戶信息輸入的范圍; (4)過濾用戶輸入的錯誤數(shù)據(jù); (5)顯示頁面跳轉(zhuǎn)窗口。 4.44.4 發(fā)布功能的設(shè)計與實現(xiàn)發(fā)布功能的設(shè)計與實現(xiàn) 發(fā)布功能主要是將留言信息顯示給用戶查看,其中發(fā)布的界面主要對應(yīng)了 三種使用功能:留言發(fā)布界面、管理員界面、用戶信息的搜索界面。由于發(fā)布 功能不是很復(fù)雜,因此所采用的 mvc 的架構(gòu)也有所不同。具體的系統(tǒng)結(jié)構(gòu)如下 圖 4 所示: 圖 4 發(fā)布功能的 mvc 架構(gòu) 首先介紹 view 部分。在這里我用 html 語言編寫了一個留言框模板,這個 模板主要用于定義留言信息的顯示格式。它由

50、form 表單組成,其中用 “%標簽名稱%”標記出要動態(tài)顯示的內(nèi)容所在的位置,同時給 form 表單的 id 賦一個值,以便 controller 調(diào)用。另外還使用 javascript 制作了一些實用 的前臺動態(tài)效果,它們包括: (1)建立一些主要鏈接上的中文提示框; (2)支持在新的窗口打開用戶插入的圖片; (3)輸出滾動顯示的公告; (4)屏蔽腳本錯誤; (5)顯示頁面處理時間以及 php 運行時間等。 下面就給出留言發(fā)布界面的效果圖(圖 5): 圖 5 留言發(fā)布界面 接著介紹 controller 部分。在這里 id 是 javascript 標簽容器命名屬性, innerhtml 表

51、示一個容器內(nèi)所包含的所有代碼,通過“id.innerhtml”就能夠 在 javascript 中取得 view 部分所定義的留言框模板的代碼。然后再通過 javascript 的 replace 方法與正則表達式結(jié)合應(yīng)用,從而替換模板中的標簽內(nèi) 容,將留言信息插入到留言框模板中去。這種設(shè)計方法的好處在于客戶端不用 刷新頁面就能看到動態(tài)更新的內(nèi)容,并且利用 javascript 語言將處理靜態(tài)頁面 的代碼與處理動態(tài)頁面的代碼分離開,方便了程序員查找和修改程序。 最后介紹 model 部分。在這里主要還是用 php 語言調(diào)用 mysql 數(shù)據(jù)庫操作 類去實現(xiàn)四個功能:讀取數(shù)據(jù)、搜索、分頁和統(tǒng)計。

52、要實現(xiàn)前三個功能就必須 執(zhí)行不同的 sql 語句。讀取功能使用常規(guī)的“selectfrom”語句就能解決。 搜索功能需要在“selectfrom”語句后面再加上“wherelike”語句, 通過判斷前臺表單所返回的搜索條件,從而篩選出要搜索的數(shù)據(jù)。分頁功能學(xué) 要在 “selectfrom”語句后面加上“order bylimit”限制每頁輸 出固定條數(shù)的留言信息。統(tǒng)計功能只需要調(diào)用數(shù)據(jù)庫操作類的成員函數(shù)就能實 現(xiàn)。 4.54.5 特色功能的設(shè)計與實現(xiàn)特色功能的設(shè)計與實現(xiàn) 首先介紹驗證碼功能。所謂驗證碼,就是將一串隨機產(chǎn)生的數(shù)字或符號, 生成一幅圖片,圖片里加上一些干擾象素(防止ocr) ,由用

53、戶肉眼識別其中的 驗證碼信息,輸入表單提交網(wǎng)站驗證,驗證成功后才能使用某項功能。使用這 項功能的好處還在于防止用戶利用機器人自動灌水以及防止某些用戶采用暴力 破解方式對管理員密碼進行不斷的登陸嘗試。因此這項功能被應(yīng)用在管理員登 入界面以及用戶輸入留言信息界面。 在本系統(tǒng)中實現(xiàn)了兩種輸出驗證碼的方法,在介紹這兩種方法之前必需介 紹一下gd庫。gd庫是php處理圖形的擴展庫,它提供了一系列用來處理圖片的 api,使用gd庫可以處理圖片,或者生成圖片。因此第一種方法就是對于那些支 持gd庫的空間,調(diào)用php的gd庫函數(shù)來生成圖像再搭配php的“rand()”函數(shù)來 生成隨機數(shù)最終制作出驗證碼。第二種

54、方法就是對于不支持gd庫的空間,系統(tǒng) 判別后將自動調(diào)用編寫的256色bmp圖像輸出函數(shù),自定義生成256色bmp圖片。 然后在配合一個圖像輸出文件生成驗證碼。下面具體介紹一下第二種方法的實 現(xiàn)過程。 我們要讓系統(tǒng)輸出bmp圖片就必需了解bmp文件的結(jié)構(gòu)。bmp文件主要是由文 件頭、位圖信息頭、顏色信息和圖形數(shù)據(jù)四部分組成。在合理配置了文件頭、 位圖信息頭、顏色信息后,將本系統(tǒng)要顯示的驗證碼數(shù)據(jù),即0到9和a到z共36 個字符的圖形數(shù)據(jù)錄入到bmp圖像輸出函數(shù)中,最后再使用三個嵌套的for語句 逐行、逐字、逐像素地輸出圖像數(shù)據(jù),這樣就實現(xiàn)了bmp圖片的輸出。當然這其 中還要用到php的“rand

55、()”函數(shù)來保證輸出的驗證碼是一串隨機數(shù)。下面就給 出100象素的字符在400象素的方框內(nèi)隨機定位的256色bmp圖片生成函數(shù)的核心 代碼: $ra_sj=rand(0,3); /隨機產(chǎn)生背景色 $li = 0; / 逐行,逐字,逐像素地輸出圖像數(shù)據(jù) for($i = 19; $i = 0; $i-) / 歷經(jīng)所有行 $li+; for($ii = 0; $ii $num; $ii+) /歷經(jīng)所有字 for($iii = 0; $iii 20; $iii+) /歷經(jīng)所有像素,一個字20個像素 $ra_sjs=rand(0,7); /隨機雜色 if(rand(0,100) $codds) /雜點

56、出現(xiàn)的機率 $imgnei=$imgnei.$vcolordata$ra_sjs; /雜色 else if(x_y($iii,$li,$ii)=0) /坐標在10*10px的方框中 $di=20-$rand_sj$ii2-9; $di=$i-$di; $di=($di * 10 + $iii-$rand_sj$ii0); if($vnumberdata$vcode$ii$di=1) /不在字符上 $imgnei=$imgnei.$vcolordata$ra_sj; /背景顏色 else $ra_sjs=rand(8,12); $imgnei=$imgnei.$vcolordata$ra_sjs

57、; /字符顏色 else /背景顏色 $imgnei=$imgnei.$vcolordata$ra_sj; echo($imgnei); /輸出圖像 另外還有一個聊天室功能。聊天室主要分為webchat、bbschat兩種。 bbschat是基于telnet的tcp協(xié)議,是bbs的附設(shè)功能,需要客戶端有telnet程序。 webchat則采用瀏覽器方式,實際上是一個多人共同使用的cgi程序。其基本原 理是把每個用戶的發(fā)言通過瀏覽器傳給系統(tǒng),再由系統(tǒng)收集處理后分發(fā)給特定 用戶。本系統(tǒng)的聊天室就是采用webchat的client pull技術(shù),該技術(shù)是利用 html語言的meta標簽“http-e

58、quiv=refresh”的屬性,每隔一段時間就檢查服 務(wù)器上是否有新的數(shù)據(jù)。同時,為防止數(shù)據(jù)庫無限增大,還設(shè)計了刪除陳舊數(shù) 據(jù)的功能。這種方法簡單有效,能夠基本滿足用戶的需求。 結(jié)結(jié) 論論 通過以上的研究和實踐,可以預(yù)見基于 php 實現(xiàn)的網(wǎng)上留言管理系統(tǒng)因為 它簡單豐富的功能和方便快捷的交流方式,將會在互聯(lián)網(wǎng)時代中,大有作為。 網(wǎng)上留言系統(tǒng)也將由于越來越多的人學(xué)習(xí)和使用 php 語言,而變得更加完善。 下面總結(jié)一下本次課題研究的一些收獲和不足。 首先,通過畢業(yè)設(shè)計學(xué)會了使用 mvc 思想開發(fā)簡單的網(wǎng)絡(luò)軟件。這種開發(fā) 模式的最大特點是多個視圖能夠共享一個模型,同時它將應(yīng)用程序的輸入、處 理和

59、輸出分開,從而解決了傳統(tǒng)動態(tài)網(wǎng)頁開發(fā)中將像數(shù)據(jù)庫查詢語句這樣的數(shù) 據(jù)層代碼和像 html 這樣的表示層代碼混在一起的問題。因此提高了編程人員的 開發(fā)效率,使得系統(tǒng)的結(jié)構(gòu)更加清晰,管理也更加方便。 其次,還研究了 bmp 圖像文件的結(jié)構(gòu),學(xué)會了如何建立 socket 會話,并根 據(jù) smtp 協(xié)議發(fā)送郵件。另外還為系統(tǒng)加入了身份驗證,密碼管理,驗證碼, session 等功能,從而增強了系統(tǒng)的安全性。 最后,本系統(tǒng)存在一個不足之處就是沒有設(shè)計客戶的注冊登入功能,這樣 就給管理員管理客戶帶來了不便。但不開發(fā)這項功能也是從網(wǎng)上留言系統(tǒng)的實 際應(yīng)用出發(fā),如果開發(fā)了注冊登入功能就會增加客戶的操作次數(shù),從

60、而影響客 戶對系統(tǒng)的滿意度。總之,開發(fā)網(wǎng)上留言管理系統(tǒng)最重要的工作就是要處理好 整體架構(gòu)與技術(shù)細節(jié)之間的關(guān)系,它是一個不斷協(xié)調(diào)和平衡的過程,只有將這 兩方面處理和諧了,最終才能得到一個完美的作品。 參考文獻參考文獻 1 luke welling/laura thomson美.php 和 mysql web 開發(fā)(原書第三版)m.武欣/邵 煜譯.北京:機械工業(yè)出版社,2005。 2 勒道夫美.php 程序設(shè)計m.鄧云佳等譯.北京:中國電力出版社,2003.7。 3 php開發(fā)手則eb./openpub/,2006-01-14。 4 mysql 中

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論