畢業(yè)設(shè)計(jì)論文關(guān)于php_第1頁(yè)
畢業(yè)設(shè)計(jì)論文關(guān)于php_第2頁(yè)
畢業(yè)設(shè)計(jì)論文關(guān)于php_第3頁(yè)
畢業(yè)設(shè)計(jì)論文關(guān)于php_第4頁(yè)
畢業(yè)設(shè)計(jì)論文關(guān)于php_第5頁(yè)
已閱讀5頁(yè),還剩58頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

目錄目錄1摘要4ABSTRACT4序言6第一章系統(tǒng)運(yùn)行方案61.1理論分析61.2開發(fā)工具選取61.2.1關(guān)于PHP71.2.2關(guān)于MYSQL1.2.3關(guān)于LAMP平臺(tái)1.3B/S體系與三層配置模式81.4開發(fā)方法:原型法開發(fā)8第二章可行性分析92.1市場(chǎng)分析92.2經(jīng)濟(jì)分析92.3技術(shù)分析9第三章需求分析103.1性能分析103.1.1加載數(shù)據(jù)效率要求103.1.2界面格調(diào)要求3.2運(yùn)行環(huán)境103.2.1硬件環(huán)境103.2.2軟件環(huán)境103.3功效需求分析103.3.1用戶模塊103.3.2內(nèi)容瀏覽模塊113.3.3圖片上傳模塊113.3.4留言模塊113.3.5評(píng)論模塊113.3.6注冊(cè)會(huì)員管理模塊113.3.7類別管理模塊113.3.8上傳文件管理模塊123.3.9圖片信息管理模塊123.3.10留言/評(píng)論管理模塊123.4業(yè)務(wù)流程圖分析123.4.1用戶登錄數(shù)據(jù)流程圖分析123.4.1用戶登瀏覽流程圖分析123.4.1后臺(tái)管理?yè)?jù)流程圖分析133.5數(shù)據(jù)關(guān)系E-R圖14第四章總體設(shè)計(jì)154.1概述154.2系統(tǒng)功效模塊設(shè)計(jì)154.3數(shù)據(jù)庫(kù)詳細(xì)設(shè)計(jì)16第五章詳細(xì)設(shè)計(jì)185.1主頁(yè)-前臺(tái)用戶訪問界面185.1.1用戶模塊191程序描述202程序流程圖203詳細(xì)代碼設(shè)計(jì)204界面演示215.1.2內(nèi)容瀏覽模塊211程序描述212程序流程圖213詳細(xì)代碼設(shè)計(jì)214界面演示225.1.3圖片上傳模塊221程序描述222程序流程圖223詳細(xì)代碼設(shè)計(jì)224界面演示245.1.4留言模塊241程序描述242程序流程圖243詳細(xì)代碼設(shè)計(jì)244界面演示255.1.5評(píng)論模塊251程序描述252程序流程圖253詳細(xì)代碼設(shè)計(jì)264界面演示265.2管理中心-管理員訪問后臺(tái)界面275.2.1注冊(cè)會(huì)員管理模塊271程序描述272程序流程圖273詳細(xì)代碼設(shè)計(jì)284界面演示295.2.2類別管理模塊291程序描述292程序流程圖293詳細(xì)代碼設(shè)計(jì)294界面演示315.2.3上傳文件管理模塊1程序描述322程序流程圖323詳細(xì)代碼設(shè)計(jì)324界面演示335.2.4圖片信息管理模塊1程序描述332程序流程圖333詳細(xì)代碼設(shè)計(jì)344界面演示345.2.5留言/評(píng)論管理模塊351程序描述352程序流程圖353詳細(xì)代碼設(shè)計(jì)354界面演示36第六章系統(tǒng)測(cè)試與維護(hù)376.1系統(tǒng)測(cè)試標(biāo)準(zhǔn)376.2系統(tǒng)測(cè)試方法37第七章高級(jí)應(yīng)用-MVC思想397.1.1介紹7.1.2傳統(tǒng)PHP嵌入開發(fā)7.1.3Smarty模板技術(shù)7.2MVC設(shè)計(jì)思緒417.3MVC在PHP中實(shí)現(xiàn)437.4三層開發(fā)體系結(jié)構(gòu)和MVC比較457.5MVC開發(fā)流程45第七章結(jié)束語47第八章參考文件48摘要伴隨互聯(lián)網(wǎng)高速發(fā)展,傳統(tǒng)web應(yīng)用已經(jīng)顯得力不從心,而web2.0出現(xiàn)極大得改進(jìn)了這一局面。所謂web2.0其關(guān)鍵就是用戶不再只是被動(dòng)網(wǎng)頁(yè)瀏覽者,他們既是網(wǎng)站瀏覽者,也是網(wǎng)站內(nèi)容制造者。在加上web2.0網(wǎng)站采取AJAX技術(shù)異步加載數(shù)據(jù),極大改進(jìn)用戶體驗(yàn)和節(jié)約了寶貴網(wǎng)絡(luò)資源,所以,未來互聯(lián)網(wǎng)趨勢(shì)必定是web2.0。所以,我畢業(yè)設(shè)計(jì)就以虛擬小區(qū)為題,突出web2.0思想,構(gòu)建一個(gè)由用戶提供圖片資料,管理員只負(fù)責(zé)整理,公布用戶提供圖片,然后供用戶下載網(wǎng)站,比起傳統(tǒng)由管理員單一提供資源相比,有著提供資源更多,更全,網(wǎng)站與用戶交互性更強(qiáng)等優(yōu)勢(shì)。網(wǎng)站基本運(yùn)作過程:用戶注冊(cè)之后即可上傳圖片資源,公布留言,評(píng)論等。管理員員對(duì)用戶上傳圖片審核之后公布到前臺(tái)對(duì)應(yīng)類別。管理員可對(duì)圖片分類,對(duì)用戶資料,用戶留言,評(píng)論進(jìn)行管理。用戶和管理員各自都有對(duì)應(yīng)權(quán)限??蓤?zhí)行對(duì)應(yīng)操作。網(wǎng)站構(gòu)建意義:突出web2.0思想,增強(qiáng)用戶交互性,豐富網(wǎng)絡(luò)資源,作為用戶,他們既是網(wǎng)站使用者,又是內(nèi)容制造者,這么不但能夠增加網(wǎng)站訪問量,又能夠減輕網(wǎng)站管理員工作量,比起傳統(tǒng)圖片下載站,有著不可比擬優(yōu)勢(shì)。序言喜歡下載圖片網(wǎng)友應(yīng)該都去過圖片下載網(wǎng)站,是不是已經(jīng)習(xí)慣傳統(tǒng)下載方式?當(dāng)你在網(wǎng)站上四處搜索自己想要圖片卻一無所獲時(shí),是不是挫折感油然而生?我也曾經(jīng)埋怨過,為何這網(wǎng)站圖片總那么不合我胃口???假如能由全部用戶一起提供圖片資源,那不是豐富多了嗎?在此次畢業(yè)設(shè)計(jì)中,我就以此為題,展開設(shè)計(jì)。很顯然,傳統(tǒng)網(wǎng)站設(shè)計(jì),已經(jīng)難以應(yīng)付互聯(lián)網(wǎng)高速發(fā)展,web2.0也自然在互聯(lián)網(wǎng)高速發(fā)展下應(yīng)運(yùn)而生。告別傳統(tǒng)網(wǎng)友被動(dòng)得瀏覽網(wǎng)頁(yè),管理員掌管網(wǎng)站一切時(shí)代,如今,網(wǎng)友們既是網(wǎng)站消費(fèi)者(瀏覽者),也是網(wǎng)站內(nèi)容制造者。伴隨blog,wiki等web2.0網(wǎng)站不停誕生,web2.0已經(jīng)正是走進(jìn)我們生活,倘若再堅(jiān)持傳統(tǒng)網(wǎng)站設(shè)計(jì)模式,那就顯落伍了。尤其事AJAX技術(shù)在web2.0網(wǎng)站大量應(yīng)用,極大得改進(jìn)了用戶體驗(yàn),網(wǎng)頁(yè)瀏覽變得和桌面軟件應(yīng)用一樣方便。什么是AJAX?AJAX即異步Javascript+XML,它使得頁(yè)面在不用刷新得情況下即可與服務(wù)器通訊,返回結(jié)果,改進(jìn)了我們等候頁(yè)面刷新痛苦,使得客戶端有更豐富表現(xiàn)力,在此次畢業(yè)設(shè)計(jì)中,我適當(dāng)應(yīng)用了這門技術(shù)。好,共同參加構(gòu)建網(wǎng)站,豐富網(wǎng)站,改進(jìn)用戶體驗(yàn)就是本此畢業(yè)設(shè)計(jì)網(wǎng)站主要特點(diǎn)。好東西就要大家一起分享,想想您是愿意去傳統(tǒng)MP3網(wǎng)站下載MP3,還是更愿意使用Kugoo呢?答案是顯著。瘋狂下載下載站設(shè)計(jì)宗旨就是以虛擬小區(qū)形式增加網(wǎng)站和網(wǎng)友之間互動(dòng),全名參加網(wǎng)站建設(shè),當(dāng)然最主要是在這里能夠找到一切我們想要。第一章系統(tǒng)運(yùn)行方案1.1理論分析:瘋狂下載圖片下載站融入web2.0設(shè)計(jì)思想,以用戶提供全部圖片資源,管理員只負(fù)責(zé)將其公布到對(duì)應(yīng)類別。用戶除了可下載圖片,還可發(fā)表評(píng)論,留言等,用戶和管理員都有各自權(quán)限劃分,可執(zhí)行對(duì)應(yīng)操作。因?yàn)榫W(wǎng)站與用戶,用戶與用戶交互性強(qiáng),所以定義為網(wǎng)上虛擬小區(qū)。網(wǎng)站主體采取執(zhí)行效率極高PHP開發(fā),使用AJAX技術(shù)輔助,數(shù)據(jù)庫(kù)方面采取與PHP之最好組合MYSQL,web服務(wù)器和操作系統(tǒng)則采取apache和linux,這就是所謂LAMP建站方案,因?yàn)長(zhǎng)AMP均為開源軟件,且效率高于微軟平臺(tái),所以該套方案已得到極大推廣和普及,所以本畢業(yè)設(shè)計(jì)采取基于LAMP平臺(tái)開發(fā)。1.2開發(fā)工具選?。赫缟厦骊愓f,本系統(tǒng)之所以采取PHP作為服務(wù)器端腳本語言是因?yàn)镻HP執(zhí)行效率很高,程序運(yùn)行速度快,且易于上手,除錯(cuò)方便。最主要是它是無償。相對(duì)與ASP而言,它效率更高,且ASP部分組件均要收費(fèi)(如上傳組件)。而JSP配置和除錯(cuò)過于復(fù)雜,故采取PHP。數(shù)據(jù)庫(kù)方面因?yàn)槎际情_源項(xiàng)目,PHP內(nèi)置支持MYSQL,且MYSQL是正規(guī)關(guān)系數(shù)據(jù)庫(kù),且占用資源極少,執(zhí)行效率很高,當(dāng)然,它也是無償。至于其余數(shù)據(jù)庫(kù),ACCESS是桌面型個(gè)人數(shù)據(jù)庫(kù),SQLSERVER不方便在linux下于PHP搭配使用,ORACLE是商業(yè)大型數(shù)據(jù)庫(kù),所以不予采取。數(shù)據(jù)庫(kù)采取PHPMYADMIN執(zhí)行網(wǎng)絡(luò)操作,網(wǎng)站界面框架采取Dreameaver8,在windowssxp下開發(fā),PHP,javascript程序采取editplus(windows平臺(tái))和gedit(linux平臺(tái))開發(fā),調(diào)試環(huán)境:linux。另外還用到photoshop等圖像處理軟件制作圖片界面。1.2.1關(guān)于PHPPHP是HypertextPreprocessor簡(jiǎn)稱,是一個(gè)HTML內(nèi)嵌式編程語言。它語法混合了C、Java和Perl優(yōu)點(diǎn)及它新語法,比CGI、ASP或者Perl更加快速地執(zhí)行動(dòng)態(tài)網(wǎng)頁(yè)??倎碚f,它有以下幾個(gè)方面優(yōu)點(diǎn):(1)支持?jǐn)?shù)據(jù)庫(kù)非常廣泛,大到SYBASE、MySQL、ORACLE,小到Access都支持。(2)跨平臺(tái)性非常好,支持Windows系列操作系統(tǒng),LINUX操作系統(tǒng)和UNIX操作系統(tǒng)。同時(shí)支持多個(gè)Web服務(wù)器。(3)開源軟件,升級(jí)更新速度非常快。(4)無償軟件,無須花錢購(gòu)置。同時(shí)與Linux、Apache、MySQL組成性價(jià)比最高Web系統(tǒng)。(5)PHP5.0有成熟面向?qū)ο篌w系,能夠適應(yīng)基本面向?qū)ο笠?,適合開發(fā)大型項(xiàng)目。1.2.2關(guān)于MYSQLMYSQL是基于SQL,完全網(wǎng)絡(luò)化跨平臺(tái)關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng),同時(shí)是具備客戶機(jī)/服務(wù)器體系結(jié)構(gòu)分布式數(shù)據(jù)庫(kù)管理系統(tǒng)。它具備功效強(qiáng),使用簡(jiǎn)便,管理方便,運(yùn)行速度快,安全可靠性高等優(yōu)點(diǎn)。支持多個(gè)語言編寫訪問數(shù)據(jù)庫(kù)程序。1.2.3關(guān)于LAMP平臺(tái)LAMP即操作系統(tǒng):LINUX,web服務(wù)器:APACHE,數(shù)據(jù)庫(kù):MYSQL,服務(wù)器端腳本:PHP第一個(gè)字母組合。LAMP經(jīng)過幾年快速發(fā)展,現(xiàn)在已經(jīng)在世界范圍內(nèi)走出草根階層,成為Web服務(wù)器事實(shí)標(biāo)準(zhǔn)。這些開源組件兼容性不停完善,“黃金組合”應(yīng)用情形變得愈加普便。伴隨IT業(yè)發(fā)展,互聯(lián)網(wǎng)和B/S軟件盛行,LAMP組成了一個(gè)強(qiáng)大Web應(yīng)用程序平臺(tái)。LAMP每一個(gè)組件都是FreeorOpenSourceSoftware,無償或者開源軟件。這種無償和開源方式對(duì)于全世界用戶都具備很強(qiáng)吸引力,不論企業(yè)和個(gè)人開發(fā)者,無需再付費(fèi)購(gòu)置“專業(yè)”商用軟件。尤其是在互聯(lián)網(wǎng)方面,不需要為軟件公布支付任何許可證費(fèi)就能夠開發(fā)和應(yīng)用基于LAMP工程。同時(shí)開源小區(qū)潛力更在于資源共享,上百萬志愿開發(fā)者為開源軟件貢獻(xiàn)自己力量,確保了LAMP技術(shù)不停進(jìn)步和升級(jí)。開源特征也使企業(yè)和開發(fā)人員能夠隨意修改源程序?yàn)槲宜?,提升專有軟件或者商業(yè)軟件限制中所沒有靈活性,放大了項(xiàng)目標(biāo)衍生性。業(yè)內(nèi)人士預(yù)計(jì),在服務(wù)器平臺(tái)及軟件方面,LAMP市場(chǎng)擁有率將在未來兩年內(nèi)取得更高市場(chǎng)分額。1.3B/S體系與三層配置模式B/S結(jié)構(gòu)從邏輯上講分為四個(gè)層次:客戶機(jī)、Web服務(wù)器、應(yīng)用服務(wù)器、數(shù)據(jù)服務(wù)器??蛻魴C(jī)主要責(zé)任人機(jī)交互;Web服務(wù)器主要負(fù)責(zé)對(duì)客戶端應(yīng)用程序集中管理;應(yīng)用服務(wù)器主要負(fù)責(zé)應(yīng)用邏輯集中管理,它也能夠依照其處理詳細(xì)業(yè)務(wù)不一樣而分為多個(gè);數(shù)據(jù)服務(wù)器則主要負(fù)責(zé)數(shù)據(jù)存放和組織、數(shù)據(jù)庫(kù)分布式管理、數(shù)據(jù)庫(kù)備份和同時(shí)等等。在B/S體系結(jié)構(gòu)系統(tǒng)中,用戶經(jīng)過瀏覽器向分布在網(wǎng)絡(luò)上許多服務(wù)器發(fā)出請(qǐng)求,服務(wù)器對(duì)瀏覽器請(qǐng)求進(jìn)行處理,將用戶所需信息返回到瀏覽器。B/S結(jié)構(gòu)簡(jiǎn)化了客戶機(jī)工作,客戶機(jī)上只需配置少許客戶端軟件。服務(wù)器將擔(dān)負(fù)更多工作,對(duì)數(shù)據(jù)庫(kù)訪問和應(yīng)用程序執(zhí)行將在服務(wù)器上完成。瀏覽器發(fā)出請(qǐng)求,而其余如數(shù)據(jù)請(qǐng)求、加工、結(jié)果返回以及動(dòng)態(tài)網(wǎng)頁(yè)生成等工作全部由WebServer完成。實(shí)際上B/S體系結(jié)構(gòu)是把二層C/S結(jié)構(gòu)事務(wù)處理邏輯模塊從客戶機(jī)任務(wù)中分離出來,由Web服務(wù)器單獨(dú)組成一層來負(fù)擔(dān)其任務(wù),這么客戶機(jī)壓力減輕了,把負(fù)荷分配給了Web服務(wù)器。這種三層體系結(jié)構(gòu)如圖1所表示。B/S模式特點(diǎn)分布式應(yīng)用:B/S結(jié)構(gòu)經(jīng)過應(yīng)用服務(wù)器、數(shù)據(jù)服務(wù)器分布以及前端客戶機(jī)簡(jiǎn)化,處理了分布式應(yīng)用問題??缙脚_(tái)應(yīng)用:可跨操作系統(tǒng)平臺(tái)、跨數(shù)據(jù)庫(kù)平臺(tái)。輕易布署和管理:整個(gè)系統(tǒng)管理、資源分配、數(shù)據(jù)庫(kù)操作、業(yè)務(wù)邏輯部件管理及動(dòng)態(tài)加載等工作集中于應(yīng)用服務(wù)器。這可降低客戶機(jī)管理難度,有效提升整個(gè)系統(tǒng)運(yùn)行效率,降低應(yīng)用系統(tǒng)布署和管理難度。三層配置模式在兩層配置模式基礎(chǔ)上增加了基于組件方式中間層軟件。因?yàn)槊總€(gè)組件都可在不影響其它部分條件下,用另一個(gè)具備一樣功效組件取而代之,所以具備極大靈活性和自由度。1.4開發(fā)方法:原型法開發(fā)原型法(Prototyping)是20世紀(jì)80年代伴隨計(jì)算機(jī)軟件技術(shù)發(fā)展,尤其是在關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)(RelationalDataBaseSystem,RDBS)、第四代程序生成語言(4thGenerationLanguage,4GL)和各種系統(tǒng)開發(fā)生成環(huán)境產(chǎn)生基礎(chǔ)上,提出一個(gè)從設(shè)計(jì)思想、工具、伎倆都全新系統(tǒng)開發(fā)方法。它揚(yáng)棄了那種一步步周密細(xì)致地調(diào)查分析,然后逐步整理出文字檔案,最終才能讓用戶看到結(jié)果繁瑣作法。第二章可行性分析2.1市場(chǎng)分析現(xiàn)在關(guān)于圖片下載網(wǎng)站確實(shí)不少,可是為何此次還是以圖片網(wǎng)站為題呢,主要是追求一個(gè)創(chuàng)新,迎合當(dāng)今WEB2.0趨勢(shì),在博克,WIKI,播客流行今天,傳統(tǒng)互聯(lián)網(wǎng)應(yīng)用顯然已經(jīng)捉襟見肘,過去圖片下載網(wǎng)站就是以管理員提供資源來提供下載,有限不說,還極難符合大家喜好,將其改成WEB2.0模式,由廣大網(wǎng)友上傳資源,管理員員只是對(duì)其來整剪公布,和對(duì)會(huì)員管理,不但大大增加網(wǎng)站資源,節(jié)約網(wǎng)站管理,還能極大程度滿足大家喜好,可謂是老樹開新花,是非常有意義。2.2經(jīng)濟(jì)分析因?yàn)橄到y(tǒng)所需要軟件設(shè)備都能夠經(jīng)過設(shè)計(jì)處理.所以經(jīng)濟(jì)方面顧只考慮硬件方面設(shè)施.硬件設(shè)施方面有兩種處理方案.方法1:采取獨(dú)立服務(wù)器,光纖接入,或者能夠選擇電信主機(jī)托管業(yè).方法2:采取虛擬主機(jī)業(yè)務(wù),費(fèi)用高低由購(gòu)置空間大小所決定。方法1成本相對(duì)高,方法2成本相對(duì)低,不過方法2可能對(duì)網(wǎng)站訪問同時(shí)在線人數(shù)等有一些影響。網(wǎng)站建立完成后,伴隨訪問人數(shù)增加到一定程度后,能夠考慮收費(fèi),而收費(fèi)伎倆主要以空間大小為依據(jù)。用戶申請(qǐng)時(shí)能夠得到一個(gè)無償空間,不過伴隨用戶功效增加和文件增多,當(dāng)可用空間不足時(shí),用戶能夠考慮向網(wǎng)站購(gòu)置空間.以網(wǎng)站訪問人數(shù)為20萬人,其中有1萬人購(gòu)置空間平均為10M,而1M空間收取2元/年.網(wǎng)站即可有20萬元收入,該比收入是相當(dāng)可觀.2.3技術(shù)分析在選擇程序語言上,我們選擇現(xiàn)在最為流行開源腳本語開語言PHP,因?yàn)镻HP效率高,且支持面向?qū)ο缶幊?,適合大型項(xiàng)目標(biāo)開發(fā),相對(duì)于asp,效率遠(yuǎn)遠(yuǎn)高于前者,相對(duì)于jsp復(fù)雜配置,php顯得十分簡(jiǎn)單,比較.net,PHP能夠支持多個(gè)操作系統(tǒng)平臺(tái),安全性不言而喻。數(shù)據(jù)庫(kù)方面采取小巧且功效強(qiáng)大mysql數(shù)據(jù)庫(kù),系統(tǒng)平臺(tái)采取linux,更安全,更高效,配合apache服務(wù)器,能最大效率發(fā)揮系統(tǒng)功效。網(wǎng)站使用ajax技術(shù)大大提升用戶體驗(yàn)。第三章需求分析3.1性能分析 3.1.1加載數(shù)據(jù)效率要求服務(wù)器部分:本網(wǎng)站訪問不限制時(shí)間,必須提供二十四小時(shí)正常訪問查詢服務(wù)部分:用戶經(jīng)過上網(wǎng)從搜索信息到返回不超出5秒鐘。數(shù)據(jù)管理部分:提交一筆錄入到結(jié)果返回不超出5秒鐘。公布信息時(shí)應(yīng)先驗(yàn)證條件是否達(dá)成,不能出現(xiàn)死循環(huán)無限等候。3.1.2界面格調(diào)要求網(wǎng)站整體以活潑色調(diào)為主,主要為橙色,綠色和白色為主,輔助紅色給人清新,舒適感覺,配合CSS和PS設(shè)計(jì),在1024×768分辨率下達(dá)成最好顯示效果,界面簡(jiǎn)練清爽,不會(huì)過于復(fù)雜。3.2運(yùn)行環(huán)境 3.2.1硬件環(huán)境此次演示環(huán)境客戶機(jī)和服務(wù)器為同一主機(jī),服務(wù)器配置:AMD1.5GCPU,內(nèi)存1G。3.2.2軟件環(huán)境操作系統(tǒng):dubuntulinux6WEB服務(wù)器:apache2.0數(shù)據(jù)庫(kù):mysql5PHP解釋器版本:5.1.2,數(shù)據(jù)庫(kù)管理工具:phpmyadmin2.4.1。3.3業(yè)務(wù)需求分析3.3.1用戶模塊1.新用戶填寫相關(guān)信息后即可成為網(wǎng)站會(huì)員。2.注冊(cè)用戶分為普通會(huì)員和VIP會(huì)員,普通會(huì)員能夠?yàn)g覽非精華主題,提供圖片資源,給網(wǎng)站留言。VIP會(huì)員除了具備上述權(quán)限外還能夠?yàn)g覽精華主題。3.注冊(cè)用戶在注冊(cè)是若有填寫找回密碼信息,能夠在丟失密碼時(shí)對(duì)密碼進(jìn)行重設(shè)。4.普通會(huì)員經(jīng)過公布資源,待管理員審核經(jīng)過后取得對(duì)應(yīng)積分,積分超出自動(dòng)升級(jí)成為VIP會(huì)員。5.全部會(huì)員均可對(duì)主題發(fā)表評(píng)論。3.3.2內(nèi)容瀏覽模塊1.本系統(tǒng)將對(duì)主題進(jìn)行分類瀏覽,類別由后臺(tái)控制生成,每個(gè)類別對(duì)應(yīng)對(duì)應(yīng)主題。2.用戶在選擇對(duì)應(yīng)類別后見到是該類別下全部主題。3.點(diǎn)擊標(biāo)題瀏覽主題相關(guān)內(nèi)容。4.網(wǎng)站首頁(yè)列出最新主題和瀏覽最多主題,在詳細(xì)信息頁(yè),一樣提供此功效,便于導(dǎo)航和吸引用戶。3.3.3圖片上傳模塊1.在網(wǎng)站開啟上傳功效時(shí),注冊(cè)用戶登陸后能夠上傳圖片資源來獲取對(duì)應(yīng)積分。2.上傳圖片限制于jpg,gif,png幾個(gè)文件類型。上傳文件大小限制為2M。3.上傳文件必須經(jīng)管理員審核才能公布到前臺(tái)。4.每次上傳一張圖片。3.3.4留言模塊1.網(wǎng)站設(shè)有留言板,方便用戶提出意見和咨問詢題。2.注冊(cè)用戶登陸后,能夠經(jīng)過留言板留言。3.用戶留言后,等候管理員回復(fù)。4.全部注冊(cè)用戶均可瀏覽留言內(nèi)容。3.3.5評(píng)論模塊1.對(duì)于公布主題,瀏覽者能夠?qū)Υ税l(fā)表自己意見和想法。2.僅限登陸后注冊(cè)用戶發(fā)表評(píng)論。3.發(fā)表評(píng)論采取ajax技術(shù),不刷新頁(yè)面,不影響用戶瀏覽心情,改進(jìn)用戶體驗(yàn)。4.顯示評(píng)論頁(yè)面嵌套IFRAME,查看新評(píng)論也無需刷新整個(gè)頁(yè)面。3.3.6注冊(cè)會(huì)員管理模塊1.管理員可對(duì)注冊(cè)會(huì)員進(jìn)行資料修改,刪除會(huì)員等操作。2.會(huì)員信息以列表形式表現(xiàn),點(diǎn)擊會(huì)員名稱可展示詳細(xì)注冊(cè)信息。3.若該會(huì)員不符合要求可刪除該會(huì)員資料。4.管理員可編輯會(huì)員信息,如加分,提升權(quán)限等。5.該操作適合于普通管理員和超級(jí)管理員。3.3.7類別管理模塊1.網(wǎng)站類別最大特色就是采取遞歸算法實(shí)現(xiàn)無限級(jí)分類??扇我庠黾禹敿?jí)分類和子類。2.后臺(tái)類別管理采取仿windows屬性菜單,可伸縮,方便管理。3.在任何一級(jí)菜單下都可添加子菜單。4.全部類別都能夠編輯和刪除。5.該操作只向超級(jí)管理員開放。3.3.8上傳文件管理模塊1.上傳文件默認(rèn)是未經(jīng)過審核。以列表形式顯示。2.管理員先對(duì)上傳文件審核,符合規(guī)范經(jīng)過審核,此時(shí)狀態(tài)變成經(jīng)過。3.若上傳文件不符合要求,管理員能夠刪除該文件。4.此操作適合普通管理員和超級(jí)管理員。3.3.9圖片信息管理模塊1.管理員能夠向指定類別添加主題,刪除主題,和編輯主題。2.添加主題采取開源框架FCKeditor來進(jìn)行排版。3.管理員能夠指定該主題內(nèi)容是否為精華,精華只有VIP會(huì)員能夠?yàn)g覽。4.該操作適合普通管理員和超級(jí)管理員。3.3.10留言/評(píng)論管理模塊1.用戶發(fā)表留言和對(duì)主題評(píng)論用列表形式表現(xiàn)。2.管理員對(duì)用戶留言進(jìn)行回復(fù),對(duì)不正當(dāng)留言進(jìn)行刪除。3.管理員對(duì)不正當(dāng)評(píng)論可進(jìn)行刪除。4.該操作適合普通管理員和超級(jí)管理員。3.4業(yè)務(wù)流程圖分析3.4.1用戶登陸數(shù)據(jù)流程分析網(wǎng)站首頁(yè)網(wǎng)站首頁(yè)是否登陸注冊(cè)重新登陸要注冊(cè)要瀏覽信息3.4.2用戶瀏覽信息流程分析瀏覽者瀏覽者瀏覽信息是否登陸否返回登陸界面上傳資源發(fā)表留言下載信息參加評(píng)論升級(jí)權(quán)限3.4.3后臺(tái)管理操作流程分析管理留言,評(píng)論管理圖片信息管理上傳文件管理類別管理,限超級(jí)管理員會(huì)員管理管理員保留數(shù)據(jù)提交更改管理留言,評(píng)論管理圖片信息管理上傳文件管理類別管理,限超級(jí)管理員會(huì)員管理管理員保留數(shù)據(jù)提交更改3.5數(shù)據(jù)關(guān)系E-R圖配置表配置表網(wǎng)站名稱網(wǎng)站屬性上傳設(shè)置欄目表欄目ID父欄目ID欄目名稱添加者更新時(shí)間評(píng)論表評(píng)論ID評(píng)論內(nèi)容評(píng)論者公布日期所屬信息ID日志表日志ID訪問IP訪問者訪問時(shí)間圖片表圖片ID圖片內(nèi)容公布日期上傳者公布管理員所屬類別標(biāo)題信息類型點(diǎn)擊數(shù)上傳文件表文件ID文件名瀏覽路徑保留路徑上傳日期上傳者狀態(tài)用戶表用戶ID用戶名稱用戶密碼注冊(cè)日期用戶類型找回密碼問題找回密碼答案留言表留言ID留言時(shí)間留言內(nèi)容留言狀態(tài)回復(fù)留言者第四章總體設(shè)計(jì)4.1概述 從前面需求分析能夠看出,系統(tǒng)功效龐雜,主要分為前臺(tái)瀏覽器(B/S)信息公布和數(shù)據(jù)查詢。從使用和操作功效上分,有四種用戶:普通客戶(瀏覽器瀏覽、查詢);注冊(cè)用戶(瀏覽和本身數(shù)據(jù)管理),VIP,系統(tǒng)管理員。為便于整個(gè)系統(tǒng)組織管理,把各個(gè)相對(duì)獨(dú)立數(shù)據(jù)或功效組織到整個(gè)大系統(tǒng)中來,我們把各個(gè)相對(duì)獨(dú)立功效完全獨(dú)立設(shè)計(jì),編譯成獨(dú)立目標(biāo)(功效)模塊(singleExecutable),各功效模塊最終被集成到一個(gè)稱為虛擬桌面控制臺(tái)模塊中。對(duì)應(yīng)地將系統(tǒng)結(jié)構(gòu)分為一個(gè)控制臺(tái)程序和七個(gè)用戶模塊,各用戶模塊又分為若干各子模塊。對(duì)應(yīng)于每一個(gè)用戶模塊,幾乎都有錄入、查詢、修改、刪除、查看詳細(xì)資料這幾個(gè)功效。整個(gè)業(yè)務(wù)流程就是由這幾個(gè)基本功效實(shí)現(xiàn)。在這里每個(gè)模塊都要用到功效沒必要在每個(gè)子模塊里重復(fù)闡述,在每個(gè)子模塊里只列出區(qū)分于其它子模塊功效實(shí)現(xiàn)。4.2系統(tǒng)功效模塊圖前臺(tái)模塊前臺(tái)模塊后臺(tái)模塊瀏覽模塊上傳模塊留言模塊用戶模塊評(píng)論模塊用戶管理模塊類別管理模塊上傳管理模塊內(nèi)容管理模塊留言管理模塊4.3數(shù)據(jù)庫(kù)詳細(xì)設(shè)計(jì)config網(wǎng)站配置表webnamevarchar(20)允許空網(wǎng)站名稱bottominfovarchar(200)允許空網(wǎng)站屬性setfsoint(2)非空上傳設(shè)置0為關(guān)閉1為開啟cr_columninfo欄目分類表columnidint(4)主鍵非空欄目IDcolumnfatheridint(4)非空父欄目IDcolumnnamevarchar(100)非空欄目名稱columnaddervarchar(50)非空添加者columninputdatedate非空添加日期cr_fourm評(píng)論表d_idint(11)主鍵非空評(píng)論IDd_commentlongtext非空評(píng)論內(nèi)容d_uservarchar(50)非空公布人d_datedate非空公布日期d_picidbigint非空所屬信息IDcr_log日志表logidint(11)主鍵非空日志IDlogipvarchar(50)非空登錄IPlogadminvarchar(100)非空登錄帳號(hào)logtimedatetime非空登錄時(shí)間cr_picinfo圖片信息表p_idbigint(8)主鍵非空信息IDp_infolongtext非空信息內(nèi)容p_datedate非空公布日期upuservarchar(50)非空上傳者editadminvarchar(50)非空公布管理員p_classint(4)非空所屬類別p_titlevarchar(50)非空信息標(biāo)題p_typeint(2)非空信息類型0為普通1為精華hitsint(11)允許空點(diǎn)擊數(shù)cr_uploadfile上傳文件表f_idBigint(8)主鍵非空上傳文件IDf_nameVarchar(50)非空文件名f_saveVarchar(200)非空瀏覽路徑f_urlVarchar(200)非空保留路徑f_datedate非空上傳日期f_upnameVarchar(50)非空上傳者f_statusInt(2)非空狀態(tài)0為未經(jīng)過1為經(jīng)過cr_userinfo用戶信息表u_idInt(11)主鍵非空用戶IDusernameVarchar(50)非空用戶名userpwdVarchar(100)非空用戶密碼useradddatedate非空注冊(cè)日期usermembercodeInt(11)非空用戶等級(jí)usertypeInt(2)非空用戶類型0為普通1為VIPuserquestionVarchar(100)允許空找回密碼問題useranswerVarchar(100)允許空找回密碼答案cr_userneedpic用戶留言表n_idInt(11)主鍵非空留言IDn_timedate非空留言時(shí)間n_commentVarchar(100)非空留言內(nèi)容n_statusInt(2)非空是否回復(fù)0為未回1為已回n_recommentVarchar(100)非空回復(fù)內(nèi)容n_nameVarchar(50)非空留言者 第五章詳細(xì)設(shè)計(jì)5.1主頁(yè)——用戶瀏覽頁(yè)面主頁(yè)包括到會(huì)員注冊(cè),分類瀏覽,上傳圖片,發(fā)表留言,找回密碼等功效模塊,并提供對(duì)應(yīng)接口。5.1.1用戶模塊1程序描述:用戶模塊包含用戶注冊(cè),登錄及找回密碼3個(gè)功效。登錄后可執(zhí)行上傳,留言,評(píng)論等會(huì)員操作。未注冊(cè)用戶除了瀏覽只具備搜索操作權(quán)限。其中用戶注冊(cè)部分采取了ajax無刷新驗(yàn)證。2流程: 用戶進(jìn)入用戶進(jìn)入是否注冊(cè)注冊(cè)進(jìn)行會(huì)員操作可找回丟失密碼不可找回丟失密碼登錄否是是否填寫找回密碼資料否是3詳細(xì)代碼設(shè)計(jì):<?phpheader('Content-Type:text/html;charset=GB2312');include('inc/config.inc.php');include('inc/dbclass.php');$username=trim($_GET['username']);$db=newdb;$db->mysql($dbhost,$dbuser,$dbpassword,$dbname);$db->createcon();$querysql="selectusernamefromcr_userinfowhereusername='$username'";$result=$db->query($querysql);$rows=$db->loop_query($result);if($rows){ echo" <fontcolor=red>此會(huì)員名已被注冊(cè),請(qǐng)更換會(huì)員名!</font>";}else{ echo" <fontcolor=red>此會(huì)員名能夠注冊(cè)!</font>";}if($action==reg){$addsql="insertintocr_userinfovalues(0,'$username','$userpwd','$time',50,1,'$userquestion','$useranswer')";$db->query($addsql);echo"<imgsrc=images/pass.gif> <fontcolor=red>恭喜您,注冊(cè)成功!請(qǐng)點(diǎn)擊<ahref=login.php>這里</a>登陸!</font>";}$db->close();?>//防止輸出亂碼//包含數(shù)據(jù)庫(kù)配置信息//包含數(shù)據(jù)庫(kù)操作類//獲取注冊(cè)名//生成實(shí)例//調(diào)用連接參數(shù)函數(shù)//調(diào)用創(chuàng)建連接函數(shù)//查詢會(huì)員名//若會(huì)員名已注冊(cè)//會(huì)員名未注冊(cè)則開始//插入數(shù)據(jù)//執(zhí)行SQL語句//提醒操作信息//關(guān)閉數(shù)據(jù)庫(kù)連接4界面演示:5.1.2內(nèi)容瀏覽模塊1程序描述:內(nèi)容瀏覽模塊包含快速導(dǎo)航,分類瀏覽,搜索信息及詳細(xì)信心瀏覽功效。其中全部操作適合全部用戶,不需要任何權(quán)限。2流程:用戶用戶快速導(dǎo)航分類瀏覽搜索信息詳細(xì)頁(yè)瀏覽3詳細(xì)代碼設(shè)計(jì):<?phpwhile($rows_c=$db->loop_query($result_c)){?><tr><tdheight="24">  ·<ahref="showclass.php?id=<?phpecho$rows_c[columnid];?>"><?phpecho$rows_c[columnname];?></a></td></tr><?php}?></table></td><tdvalign="top"><tablewidth="100%"border="0"cellpadding="0"cellspacing="0"background="images/ad_bg1.gif"><?php$querysql="select*fromcr_picinfowherep_class=$id";$result=$db->query($querysql);$total=mysql_num_rows($result);pageft($total,10);$result=$db->query("select*fromcr_picinfowherep_class=$idorderbyp_iddesclimit$firstcount,$displaypg");if($result){while($rows=$db->loop_query($result)){$time=date("Y-m-d");?> <trbackground="images/ad_bg1.gif"><tdheight="24"> ·主題:<Ahref=showpic.php?id=<?phpecho$rows[p_id];?>target="_blank"><?phpecho$rows[p_title];?></A> <?php if($rows[p_date]==$time){echo"<imgsrc=images/new.gif>";} ?> <?php if($rows[p_type]==1){echo"<imgsrc=images/jinghua.gif>";} ?></td><tdwidth="150">上傳人:<?phpecho$rows[upuser];?></td><tdwidth="110"height="24"align="left"> 時(shí)間:<?phpecho$rows[p_date];?></td><tdwidth="80"height="24"align="right"> 點(diǎn)擊:<fontcolor="#FF0000"><?phpecho"$rows[hits] ";?></font></td></tr><?php}?> </table><tablewidth="100%"border="0"align="center"cellpadding="0"cellspacing="0"><tr><tdheight="50"align="center"><?phpecho$pagenav;}else{echo"該欄目為根欄目或還沒有任何統(tǒng)計(jì)!";}?>//查詢數(shù)據(jù)庫(kù)分類統(tǒng)計(jì)//循環(huán)打印//調(diào)出類別名//調(diào)出類別ID//查詢類別下信息統(tǒng)計(jì)//取得信息總數(shù)//調(diào)用pageft(),每頁(yè)顯示//10條信息(使用默認(rèn)20//時(shí),能夠省略此參數(shù)),//使用本頁(yè)URL(默認(rèn),所以//省略掉)。//打印詳細(xì)列表//打印結(jié)束//輸出分頁(yè)導(dǎo)航條代碼//提醒錯(cuò)誤信息4界面演示:5.1.3上傳文件模塊1程序描述:上傳文件模塊提供用戶經(jīng)過WEB直接向服務(wù)器上傳文件功效,該功效只對(duì)注冊(cè)會(huì)員登錄后開放,上傳文件必須經(jīng)過審核。2流程:用戶進(jìn)入用戶進(jìn)入是否登錄上傳文件提醒犯錯(cuò)上傳成功上傳失敗否是成功犯錯(cuò)3詳細(xì)代碼設(shè)計(jì):<?phpinclude('global.php');include('../inc/config.inc.php');include('../inc/dbclass.php');$a=strtolower(fileext($_FILES['file']['name']));if(!in_array(strtolower(fileext($_FILES['file']['name'])),$type)) { $text=implode(",",$type); echo"您只能上傳以下類型文件:",$text,"<br>"; } else{ $filename=explode(".",$_FILES['file']['name']); do { $filename[0]=random(10); $name=implode(".",$filename); //$name1=$name.".Mcncc"; $uploadfile=$uploaddir.$name; } while(file_exists($uploadfile));if(move_uploaded_file($_FILES['file']['tmp_name'],$uploadfile)){ $db=newdb;$db->mysql($dbhost,$dbuser,$dbpassword,$dbname);$db->createcon(); $upuser=$_COOKIE["username"]; $time=date("Y-m-d"); $url=$patch.$name; $upsql="insertintocr_uploadfilevalues(0,'$name','$url','$uploadfile','$time','$upuser',0)";if($db->query($upsql)){ echo"<center>您文件已經(jīng)上傳完成 上傳圖片預(yù)覽:</center><br><center><imgsrc='$uploadfile'></center>"; echo"<br><center><ahref='javascript:history.go(-1)'>繼續(xù)上傳</a></center>"; } else{ echo"上傳失??!"; } } } $db->close();?>//載入全局配置//載入數(shù)據(jù)庫(kù)配置//載入數(shù)據(jù)庫(kù)操作類//將文件名轉(zhuǎn)化為小寫//判斷上傳文件類型//生成目標(biāo)文件文件名//用指定字符加隨機(jī)數(shù)命名//設(shè)置隨機(jī)數(shù)長(zhǎng)度//目標(biāo)路徑存在時(shí)//上傳到指定目錄//創(chuàng)建數(shù)據(jù)庫(kù)連接對(duì)象//調(diào)用連接參數(shù)函數(shù)//上傳后寫入數(shù)據(jù)庫(kù)上傳信//息//輸出圖片預(yù)覽//犯錯(cuò)提醒//關(guān)閉數(shù)據(jù)庫(kù)連接4界面演示:5.1.43留言模塊1程序描述:留言模塊提供用戶給網(wǎng)站留下意見或者提議功效,該功效只對(duì)注冊(cè)會(huì)員登錄后開放。2流程:用戶進(jìn)入用戶進(jìn)入是否登錄發(fā)表留言提醒登錄查看留言否是3詳細(xì)代碼設(shè)計(jì):<?php$comment=trim($_POST['comment']);$name=$_COOKIE["username"];$time=date("Y-m-d");include('inc/config.inc.php');include('inc/dbclass.php');$db=newdb;//從數(shù)據(jù)庫(kù)操作類生成實(shí)例$db->mysql($dbhost,$dbuser,$dbpassword,$dbname);$db->createcon();$insertsql="insertintocr_userneedpicvalues(0,'$time','$comment',0,'','$name')";$db->query($insertsql);echo"<scriptlanguage=\"javascript\">alert(\"公布成功!\")</script>";echo"<metahttp-equiv=\"refresh\"content=\"0;URL=userneedpic.php\">";?>//獲取留言內(nèi)容//獲取用戶名//獲取日期//載入數(shù)據(jù)庫(kù)配置//載入數(shù)據(jù)庫(kù)操作類//生成實(shí)例//調(diào)用連接參數(shù)函數(shù)//調(diào)用創(chuàng)建連接函數(shù)//插入數(shù)據(jù)//提醒結(jié)果//跳轉(zhuǎn)到列表頁(yè)4界面演示:5.1.5評(píng)論模塊1程序描述:評(píng)論模塊有發(fā)表評(píng)論和查看評(píng)論兩個(gè)功效,發(fā)表評(píng)論需要注冊(cè)會(huì)員登錄后才能夠使用,發(fā)表評(píng)論采取ajax無刷新發(fā)表,具備很強(qiáng)用戶體驗(yàn)。2流程:用戶進(jìn)入用戶進(jìn)入是否登入發(fā)表評(píng)論查看評(píng)論否是3詳細(xì)代碼設(shè)計(jì):<?phpheader('Content-Type:text/html;charset=GB2312');$username=trim($_GET['username']);$newfourm=trim($_GET['newfourm']);$id=$_GET['id'];$time=date("Y-m-d");include('inc/config.inc.php');include('inc/dbclass.php');$db=newdb;$db->mysql($dbhost,$dbuser,$dbpassword,$dbname);$db->createcon();$addsql="insertintocr_fourmvalues(0,'$newfourm','$username','$time',$id)";$db->query($addsql);echo"<imgsrc=images/pass.gif> <fontcolor=red>評(píng)論已成功發(fā)表!</font>";$db->close();?>//防止輸出亂碼//獲取用戶名//獲取評(píng)論內(nèi)容//獲取所屬信息ID//獲取當(dāng)前日期//載入數(shù)據(jù)庫(kù)配置//載入數(shù)據(jù)庫(kù)操作類//從數(shù)據(jù)庫(kù)操作類生成實(shí)//例//調(diào)用連接參數(shù)函數(shù)//調(diào)用創(chuàng)建連接函數(shù)//插入數(shù)據(jù)//提醒信息//關(guān)閉數(shù)據(jù)庫(kù)連接4界面演示:5.2管理中心——后臺(tái)管理員訪問頁(yè)面5.2.1注冊(cè)會(huì)員管理模塊1程序描述:注冊(cè)會(huì)員管理模塊包含,會(huì)員資料編輯,搜索會(huì)員,刪除會(huì)員等功效,本功效開放給全部管理員。2流程:管理員進(jìn)入管理員進(jìn)入編輯資料搜索會(huì)員刪除會(huì)員保留結(jié)果3詳細(xì)代碼設(shè)計(jì):<?php$id=$_REQUEST['id'];$username=trim($_POST['username']);$useradddate=trim($_POST['useradddate']);$usermembercode=trim($_POST['usermembercode']);$usertype=$_POST['usertype'];include('../inc/config.inc.php');include('../inc/dbclass.php');$db=newdb;$db->mysql($dbhost,$dbuser,$dbpassword,$dbname);$db->createcon();//調(diào)用創(chuàng)建連接函數(shù)$editsql="updatecr_userinfosetusername='$username',useradddate='$useradddate',usermembercode=$usermembercode,usertype=$usertypewhereu_id=$id";$db->query($editsql);$db->close();?><?php$id=$_REQUEST['id'];include('../inc/config.inc.php');include('../inc/dbclass.php');$db=newdb;$db->mysql($dbhost,$dbuser,$dbpassword,$dbname);$db->createcon();$delsql="deletefromcr_userinfowhereu_id=$id";$db->query($delsql);$db->close();echo"<scriptlanguage=\"javascript\">alert(\"成功刪除該用戶資料!\")</script>";echo"<metahttp-equiv=\"refresh\"content=\"0;URL=userlist.php\">";?>//獲取會(huì)員ID//獲取會(huì)員名//獲取會(huì)員注冊(cè)日期//獲取會(huì)員積分//獲取會(huì)員類型//生成實(shí)例//調(diào)用連接參數(shù)函數(shù)//更新會(huì)員資料//關(guān)閉數(shù)據(jù)庫(kù)連接//獲取會(huì)員ID//生成實(shí)例//調(diào)用連接參數(shù)函數(shù)//調(diào)用創(chuàng)建連接函數(shù)//執(zhí)行SQL語句//提醒結(jié)果4界面演示:5.2.2類別管理模塊1程序描述:類別管理模塊是此次畢業(yè)設(shè)計(jì)比較難部分,采取遞歸算法實(shí)現(xiàn)無限級(jí)分類,該功效只針對(duì)超級(jí)管理員,可實(shí)現(xiàn)類別添加,刪除,修改。2流程:超級(jí)管理員進(jìn)入超級(jí)管理員進(jìn)入添加類別刪除類別編輯類別保留結(jié)果3詳細(xì)代碼設(shè)計(jì):<?php$GLOBALS["ID"]=1;$layer=1;$Con=mysql_connect("localhost","root","7529639");mysql_select_db("cr_download");mysql_query("SETNAMES'GBK'");$sql="select*fromcr_columninfowherecolumnfatherid=0";$result=mysql_query($sql,$Con);if(mysql_num_rows($result)>0)ShowTreeMenu($Con,$result,$ID);functionShowTreeMenu($Con,$result,$layer){$numrows=mysql_num_rows($result);echo"<tablecellpadding='0'cellspacing='0'border='0'width='100%'>";for($rows=0;$rows<$numrows;$rows++){$menu=mysql_fetch_array($result);$sql="select*fromcr_columninfowherecolumnfatherid=$menu[columnid]";$result_sub=mysql_query($sql,$Con);echo"<tr>";if(mysql_num_rows($result_sub)>0){echo"<tdwidth='110'><imgsrc='../images/admin/plus.png'border='0'style=\"cursor:pointer\"onClick='javascript:ShowMenu(Menu".$GLOBALS["ID"].");'> <ahref='classadd.php?id=$menu[columnid]'title='添加子欄目'>添加</a> <ahref='classdel.php?id=$menu[columnid]'title='刪除該欄目'onClick='returnConfirmDel()'>刪除</a> <ahref='classmodi.php?id=$menu[columnid]'title='編輯該欄目'>編輯</a></td>";echo"<tdclass='Menu'>";}else{echo"<tdwidth='110'><imgsrc='../images/admin/page.png'border='0'> <ahref='classadd.php?id=$menu[columnid]'title='添加子欄目'>添加</a> <ahref='classdel.php?id=$menu[columnid]'title='刪除該欄目'onClick='returnConfirmDel()'>刪除</a> <ahref='classmodi.php?id=$menu[columnid]'title='編輯該欄目'>編輯</a></td>";echo"<tdclass='Menu'>";}echo$menu[columnname];echo"</td></tr>";if(mysql_num_rows($result_sub)>0){echo"<trid=Menu".$GLOBALS["ID"]++."style='display:none'>";echo"<tdwidth='20'></td>";echo"<td>";$layer++;ShowTreeMenu($Con,$result_sub,$layer);$layer--;echo"</td></tr>";}}echo"</table>";}?>//基本變量設(shè)置//用來跟蹤下拉菜單ID號(hào)//用來跟蹤當(dāng)前菜單級(jí)數(shù)//連接數(shù)據(jù)庫(kù)//提取一級(jí)菜單//假如一級(jí)菜單存在則開始//菜單顯示//取得需要顯示菜單項(xiàng)//目數(shù)//開始顯示菜單,每個(gè)子菜單//都用一個(gè)表格來表示//將當(dāng)前菜單項(xiàng)目標(biāo)內(nèi)容導(dǎo)//入數(shù)組//提取菜單項(xiàng)目標(biāo)子菜單記//錄集//假如該菜單項(xiàng)目有子菜單,//則添加JavaScript//onClick語句//假如該菜單項(xiàng)目沒有子菜單,并指定了超級(jí)連接地址,則指定為超級(jí)連接,//不然只顯示菜單名稱//假如該菜單項(xiàng)目有子菜單,//則顯示子菜單//指定該子菜單ID和//style,方便和onClick語//句相對(duì)應(yīng)//將級(jí)數(shù)加1//遞歸調(diào)用ShowTreeMenu()//函數(shù),生成子菜單//子菜單處理完成,返回到遞//歸上一層,將級(jí)數(shù)減1//繼續(xù)顯示下一個(gè)菜單項(xiàng)目4界面演示:5.2.3上傳文件管理模塊1程序描述:上傳文件管理模塊是針對(duì)用戶上傳文件由管理員進(jìn)行審核,經(jīng)過以后公布到對(duì)應(yīng)類別,并獎(jiǎng)勵(lì)用戶對(duì)應(yīng)積分,該功效針對(duì)全部管理員。2流程:管理員進(jìn)入管理員進(jìn)入管理圖片添加到對(duì)應(yīng)類別用戶獲取對(duì)應(yīng)積分刪除不正當(dāng)圖片正當(dāng)不正當(dāng)3詳細(xì)代碼設(shè)計(jì):<?php$id=$_REQUEST['id'];include('../inc/config.inc.php');include('../inc/dbclass.php');include('../inc/pageft.php');$db=newdb;$db->mysql($dbhost,$dbuser,$dbpassword,$dbname);$db->createcon();$result=$db->query("select*fromcr_uploadfilewheref_id=$id");$row=$db->loop_query($result);unlink($row[f_url]);$db->query("deletefromcr_uploadfilewheref_id=$id");echo"<scriptlanguage=\"javascript\">alert(\"成功刪除文件!\")</script>";echo"<metahttp-equiv=\"refresh\"content=\"0;URL=../admin/upfileman.php\">";$db->close();?>//獲取ID//載入數(shù)據(jù)庫(kù)配置//載入數(shù)據(jù)庫(kù)類//載入分頁(yè)函數(shù)//調(diào)用連接參數(shù)函數(shù)//調(diào)用創(chuàng)建連接函數(shù)//刪除該文件//刪除對(duì)應(yīng)數(shù)據(jù)庫(kù)統(tǒng)計(jì)//提醒信息//關(guān)閉連接4界面演示:5.2.4圖片信息管理模塊1程序描述:圖片信息管理模塊提供圖片信息添加,刪除,和編輯3個(gè)功效。這里用到了一個(gè)開源html編輯器框架FCKeditor,該功效針對(duì)全部管理員。2流程:管理員進(jìn)入管理員進(jìn)入添加信息編輯信息刪除信息保留結(jié)果3詳細(xì)代碼設(shè)計(jì):<?php$p_class=$_POST['picclass'];$p_title=trim($_POST['title']);$upuser=trim($_POST['upuser']);$editadmin=trim($_POST['admin']);$p_type=$_POST['pictype'];$p_info=$_POST['picinfo'];$time=date("Y-m-d");include('../inc/config.inc.php');include('../inc/dbclass.php');$db=newdb;$db->mysql($dbhost,$dbuser,$dbpassword,$dbname);$db->createcon();$addsql="insertintocr_picinfovalues(0,'$p_info','$time','$upuser','$editadmin',$p_class,'$p_title',$p_type,0)";$db->query($addsql);echo"<scriptlanguage=\"javascript\">alert(\"添加成功,點(diǎn)確定繼續(xù)添加!\")</script>";echo"<metahttp-equiv=\"refresh\"content=\"0;URL=picadd.php\">";$db->close();?>//獲取所屬類別ID//獲取標(biāo)題//獲取上傳人//獲取公布管理員//獲取信息類型//獲取信息內(nèi)容//獲取時(shí)間//創(chuàng)建數(shù)據(jù)庫(kù)連接對(duì)象//調(diào)用連接參數(shù)函數(shù)//調(diào)用創(chuàng)建連接函數(shù)//執(zhí)行SQL//關(guān)閉數(shù)據(jù)庫(kù)連接4界面演示:5.2.4留言/評(píng)論管理模塊1程序描述:留言/評(píng)論管理模塊提留言回復(fù),刪除,功效,評(píng)論提供刪除功效。該功效針對(duì)全部管理員。2流程:管理員進(jìn)入管理員進(jìn)入回復(fù)留言刪除留言刪除評(píng)論保留結(jié)果3詳細(xì)代碼設(shè)計(jì):<?phpinclude('../inc/config.inc.php');include('../inc/dbclass.php');$db=newdb;$db->mysql($dbhost,$dbuser,$dbpassword,$dbname);$db->createcon();$n_id=$_POST['n_id'];$n_recomment=trim($_POST['n_recomment']);$updatesql="updatecr_userneedpicsetn_status=1,n_recomment='$n_recomment'wheren_id=$n_id";$db->query($updatesql);echo"<scriptlanguage=\"javascript\">alert(\"留言已成功回復(fù)!\")</script>";echo"<metahttp-equiv=\"refresh\"content=\"0;URL=adminuserneed.php\">";$db->close();?>//載入數(shù)據(jù)庫(kù)配置//載入數(shù)據(jù)庫(kù)類//從數(shù)據(jù)庫(kù)操作類生成實(shí)例//調(diào)用連接參數(shù)函數(shù)//調(diào)用創(chuàng)建連接函數(shù)//獲取留言ID//執(zhí)行SQL語句//提醒信息//關(guān)閉數(shù)據(jù)庫(kù)連接4界面演示:

第六章系統(tǒng)測(cè)試與維護(hù)6.1系統(tǒng)測(cè)試標(biāo)準(zhǔn)(1)測(cè)試工作應(yīng)防止由原開發(fā)軟件個(gè)人或小組來負(fù)擔(dān)(2)設(shè)計(jì)測(cè)試方案時(shí),不但要包含確定輸入數(shù)據(jù),而且包含從系統(tǒng)功效出發(fā)預(yù)期測(cè)試結(jié)果。(3)測(cè)試用例不但要包含合理,有效輸入數(shù)據(jù),還要包含無效或不合理輸入數(shù)據(jù)。(4)不但要檢驗(yàn)程序是否做了該做事,還要檢驗(yàn)程序是否同時(shí)做了不該做事。(5)保留測(cè)試用例,作為軟件文檔組成部分。6.2系統(tǒng)測(cè)試方法在本系統(tǒng)測(cè)試過程中,采取了現(xiàn)在慣用測(cè)試方法,人工測(cè)試和機(jī)器測(cè)試。人工測(cè)試包含個(gè)人復(fù)審,走查和會(huì)審。機(jī)器測(cè)試包含黑盒和白盒測(cè)試。在人工測(cè)試中先采取個(gè)人復(fù)審,在源程序編寫完成以后,自己對(duì)源程序各個(gè)部分進(jìn)行詳細(xì)檢驗(yàn)。然后請(qǐng)經(jīng)驗(yàn)豐富老師檢驗(yàn)一遍,方便發(fā)覺問題。經(jīng)過人工測(cè)試后,再進(jìn)行機(jī)器測(cè)試。經(jīng)過在計(jì)算機(jī)直接運(yùn)行被測(cè)程序來發(fā)覺程序中錯(cuò)誤。系統(tǒng)測(cè)試通常有單元測(cè)試,組裝測(cè)試,確認(rèn)測(cè)試和系統(tǒng)測(cè)試四個(gè)步驟,每一步都是在前一步基礎(chǔ)上進(jìn)行。(1)單元測(cè)試單元測(cè)試是測(cè)試程序模塊及其接口與設(shè)計(jì)說明要求是否一致,目標(biāo)是發(fā)覺程序編寫階段錯(cuò)誤。它以單個(gè)程序模塊為測(cè)試單位。單元測(cè)試是采取白盒測(cè)試方法,依照詳細(xì)設(shè)計(jì)描述,從模塊內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計(jì)測(cè)試用例,進(jìn)行測(cè)試。單元測(cè)試主要從下述五個(gè)方面去檢驗(yàn)?zāi)K●模塊接口:測(cè)試信息能否正確無誤地流入,流出模塊。比如對(duì)資料庫(kù)明細(xì)表修改、添加、刪除能否正確無誤反應(yīng)到檔案中。●模塊內(nèi)部之?dāng)?shù)據(jù)結(jié)構(gòu):測(cè)試內(nèi)部數(shù)據(jù)完整性,包含內(nèi)容、形式及相互關(guān)系?!襁壿嬄窂剑簻y(cè)試應(yīng)覆蓋模塊中關(guān)鍵邏輯路徑。●犯錯(cuò)處理:測(cè)試模塊對(duì)錯(cuò)誤及產(chǎn)生錯(cuò)誤條件預(yù)見能力,而且檢測(cè)其犯錯(cuò)處理是否適當(dāng)。比如對(duì)表單處理中輸入非法數(shù)據(jù),是否及時(shí)正確地做出警告?!襁吔鐥l件:軟件往往輕易在邊界條件上發(fā)生問題,如循環(huán)第一次和最終一次執(zhí)行,判斷選擇邊界值等,可利用邊界值分析方法設(shè)計(jì)測(cè)試用例,方便檢驗(yàn)這類錯(cuò)誤。因?yàn)槊總€(gè)模塊在整個(gè)軟件中不是孤立,盡管它能夠單獨(dú)編譯,但不能單獨(dú)進(jìn)行測(cè)試。所以在測(cè)試時(shí),應(yīng)考慮它與調(diào)用和被調(diào)用模塊相互聯(lián)絡(luò)。(2)組裝測(cè)試對(duì)每個(gè)模塊完成了單元測(cè)試以后,需要按照設(shè)計(jì)時(shí)做出層次模塊圖把它們連接起來,進(jìn)行組裝測(cè)試。在資料管理信息系統(tǒng)中我采取了自底向上測(cè)試組裝次序。先從一個(gè)最底模塊開始,從下向上逐步添加模塊,組成和程序一個(gè)分支,對(duì)每個(gè)分支重復(fù)上述過程,直到全部分支組裝完成。最終將全部分支組成整個(gè)程序。(3)確認(rèn)測(cè)試經(jīng)過組裝,軟件己裝配完成,接下來進(jìn)行確實(shí)認(rèn)測(cè)試是以整個(gè)軟件作為測(cè)試對(duì)象,且采取黑盒測(cè)試方法。確認(rèn)測(cè)試內(nèi)容主要包含以下幾部分。●功效測(cè)試:檢測(cè)軟件需求規(guī)格說明書內(nèi)容是否全部實(shí)現(xiàn)?!裥阅軠y(cè)試:檢驗(yàn)軟件可移植性,兼容性,錯(cuò)誤恢復(fù)能力以及可維護(hù)性等性能指標(biāo),以檢測(cè)軟件功效實(shí)現(xiàn)程序。對(duì)于犯錯(cuò)發(fā)生,系統(tǒng)能夠自動(dòng)警告?!衽渲脤彶椋簷z驗(yàn)被測(cè)軟件全部組成是否齊全,質(zhì)量是否合乎要求,應(yīng)有維護(hù)所需全部細(xì)節(jié),而且是否編好目錄。(4)系統(tǒng)測(cè)試系統(tǒng)測(cè)試是將信息系統(tǒng)全部組成部分包含軟件,硬件,用戶以及環(huán)境等綜合在一起進(jìn)行測(cè)試,要在系統(tǒng)實(shí)際運(yùn)行環(huán)境現(xiàn)場(chǎng),在用戶直接參加下進(jìn)行。包含集成功效測(cè)試,可靠性與適應(yīng)性測(cè)試,系統(tǒng)自我保護(hù)及恢復(fù)能力測(cè)試,安全性測(cè)試,強(qiáng)度測(cè)試。

第七章高級(jí)應(yīng)用及MVC思想7.1.1介紹MVC是“Model-View-Controller”縮寫,即“模型-視圖-控制器”。Event(事件)造成Controller改變Model或View,或者同時(shí)改變二者。只要Controller改變了Model數(shù)據(jù)或者屬性,全部依賴View都會(huì)自動(dòng)更新。類似,只要Controller改變了View,View都會(huì)從潛在Model中獲取數(shù)據(jù)來刷新自己。MVC模式最早是Smalltalk語言研究團(tuán)提出,應(yīng)用于交互應(yīng)用程序中。MVC模式是一個(gè)架構(gòu)模式,其實(shí)需要其余模式協(xié)作完成[2]。MVC模式是一個(gè)復(fù)雜機(jī)構(gòu)模式,其實(shí)現(xiàn)也顯得非常復(fù)雜。不過,現(xiàn)在已經(jīng)總結(jié)出了很多可靠模式,多個(gè)設(shè)計(jì)模式結(jié)合在一起,使MVC模式實(shí)現(xiàn)變得相當(dāng)簡(jiǎn)單易行。View能夠看作一棵樹,顯然能夠用Composite設(shè)計(jì)模式來實(shí)現(xiàn)。Views和Models之間關(guān)系能夠用Observer模式表現(xiàn)。Controller控制View顯示,能夠用Strategy實(shí)際模式實(shí)現(xiàn)。Model通常是一個(gè)調(diào)停者,可采取Mediator設(shè)計(jì)模式來實(shí)現(xiàn)。7.1.2傳統(tǒng)PHP嵌入開發(fā)最早PHP語言是純粹過程化,經(jīng)過界定符與HTML區(qū)分并與HTML嵌套,實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)處理。一個(gè)經(jīng)典代碼例子以下:<HTML><HEAD><TITLE>MyPage</TITLE></HEAD><BODY>Hello,<?PHPecho”Michael”;?>,Welcometomysite!</BODY></HTML>其中,<?PHP與?>是PHP界定符,它們之間代碼即為PHP代碼,能夠動(dòng)態(tài)返回需要數(shù)據(jù)。同時(shí)也能夠與數(shù)據(jù)庫(kù)連接實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作。在Internet早期一個(gè)HTML文件體積并不是很大,業(yè)務(wù)邏輯也相對(duì)簡(jiǎn)單,這種情況下,echo一行行HTML代碼還相當(dāng)輕易。但伴隨網(wǎng)絡(luò)提速,HTML文件體積暴增,業(yè)務(wù)邏輯也越來越復(fù)雜。這時(shí)邏輯代碼與表當(dāng)代碼嵌套在實(shí)際中就顯得相當(dāng)困難。比如僅僅是一些下拉選擇框初始值確實(shí)定,就需要大量代碼來實(shí)現(xiàn)。此時(shí),數(shù)據(jù)層、邏輯層、表現(xiàn)層概念還沒有一個(gè)界定和區(qū)分,完全是混合在一起。伴隨對(duì)程序代碼與HTML分離迫切要求,“模板”技術(shù)應(yīng)運(yùn)產(chǎn)生。7.1.3Smarty模板技術(shù)Smarty出現(xiàn)和其獨(dú)特思想能夠說是讓業(yè)界為之一震,它模板編程和“編譯”概念帶來了一場(chǎng)革命。Smarty將邏輯判斷和循環(huán),賦值,config配置文件等引入到模板中,能夠說Smarty就是一個(gè)小小解析器。這么好處就是我們能夠用一個(gè)更為通用模板來實(shí)現(xiàn)表現(xiàn)層,不用將顯示上邏輯判斷送到PHP邏輯層中進(jìn)行,也不用為了實(shí)當(dāng)代碼分離而因一個(gè)小小顯示上改變重新建一個(gè)模板。程序員所做僅僅是提取、組織、處理好需要數(shù)據(jù),然后經(jīng)過SmartyAssign到模板,這些數(shù)據(jù)怎樣顯示,顯示多少,完全交由顯示邏輯處理。這么,程序代碼和HTML代碼就能夠更徹底分離,不但簡(jiǎn)化了工作復(fù)雜度,也更有利于分工協(xié)作。Smarty另一個(gè)特征就是“編譯”。接到request后,先判斷是否是第一次請(qǐng)求該URL,假如是,將該URL所需模板文件“編譯”成腳本,然后redirect;假如不是,則表示該模板已經(jīng)編譯過,能夠馬上redirect。這么除了第一次編譯成本比較高之外,其余訪問省去了大量parse()時(shí)間。Smarty還具備cache技術(shù),對(duì)頁(yè)面生成靜態(tài)緩存,能夠適應(yīng)更為嚴(yán)格運(yùn)行要求[1]。Smarty模板引擎工作原理圖以下(圖1)所表示:圖1:Smarty工作原理圖另外,國(guó)外對(duì)Smarty這么一個(gè)Engine級(jí)別系統(tǒng)也存在著很多討論,有認(rèn)為作為一個(gè)模板,它提供功效過于繁雜,PHP本身就是一個(gè)“模板”語言,在這么解釋性語言上再用另外一套標(biāo)識(shí)嵌套一層解釋性語言,簡(jiǎn)直是多出;另一個(gè)看法是PHP作為一個(gè)優(yōu)異腳本語言,Smarty是一個(gè)愈加好徹底分離邏輯層和表現(xiàn)層思想,即使它“編譯”一樣能夠歸結(jié)為PHP語言應(yīng)用,卻能夠提供更方便使用方法,何樂而不為[10]。作者更傾向于后一個(gè)觀點(diǎn),清楚邏輯思緒比起系統(tǒng)一點(diǎn)開銷,顯然思緒更為主要!7.2MVC設(shè)計(jì)思緒MVC英文即Model-View–Controller,即把一個(gè)應(yīng)用輸入、處理、輸出流程按照Model,View,Controller方式進(jìn)行分離,這么一個(gè)應(yīng)用層被分為三個(gè)層—模型層,視圖層、控制層。視圖(View)代表用戶交互界面,對(duì)于Web來說,能夠概括為HTML界面,但也有可能為XHTML、XML、Applet和Flash等。伴隨應(yīng)用復(fù)雜性和規(guī)模性提升,界面處理也變得具備挑戰(zhàn)性,一個(gè)應(yīng)用可能有很多不一樣視圖,MVC設(shè)計(jì)模式對(duì)于視圖處理僅限于視圖上數(shù)據(jù)采集和處理,以及用戶請(qǐng)求,而不包含在視圖上業(yè)務(wù)流程處理。業(yè)務(wù)流程處理交予模型(Model)處理。比如一個(gè)訂單視圖只接收來自模型數(shù)據(jù)并顯示給用戶,以及將用戶界面輸入數(shù)據(jù)和請(qǐng)求傳遞給Controller和Model。模型(Model)就是業(yè)務(wù)流程和狀態(tài)處理以及業(yè)務(wù)規(guī)則制訂。業(yè)務(wù)流程處理過程對(duì)其余層來說暗箱操作,模型接收視圖請(qǐng)求數(shù)據(jù),并返回最終處理結(jié)果。業(yè)務(wù)模型設(shè)計(jì)能夠說是MVC最主要關(guān)鍵?,F(xiàn)在流行EJB模型就是一個(gè)經(jīng)典應(yīng)用例子,它從應(yīng)用技術(shù)實(shí)現(xiàn)角度對(duì)模型作了深入劃分,方便充分利用現(xiàn)有組件,但它不能作為應(yīng)用設(shè)計(jì)模型框架。它僅僅告訴你按照模型設(shè)計(jì)就能夠利用一些技術(shù)組件,從而減輕了技術(shù)上困難。對(duì)一個(gè)開者來說,就能夠?qū)W⒂跇I(yè)務(wù)模型設(shè)計(jì)。MVC設(shè)計(jì)模型告訴我們,把應(yīng)用模型按照一定規(guī)劃抽取出來,抽取層次很主要,這也是判斷開發(fā)人員是否優(yōu)異設(shè)計(jì)依據(jù)。抽象與詳細(xì)不能隔得太遠(yuǎn),也不能太近。MVC并沒有提供模型設(shè)計(jì)方法,而只告訴你應(yīng)該組織管理這些模型,方便于模型重構(gòu)和提升重用性。能夠用ObjectOriented編程來作比喻,MVC定義了一個(gè)頂級(jí)類,告訴它子類只能做這些,但沒法限制你能做這些,這點(diǎn)對(duì)實(shí)際應(yīng)用很主要。業(yè)務(wù)模型還有一個(gè)很主要模型那就是數(shù)據(jù)模型。數(shù)據(jù)模型主要是指實(shí)體對(duì)象數(shù)據(jù)保留。比如將一張訂單保留到數(shù)據(jù)庫(kù)中,從數(shù)據(jù)庫(kù)獲取訂單。我們能夠?qū)⑦@個(gè)模型單獨(dú)列出,全部關(guān)于數(shù)據(jù)庫(kù)操作只限在該模型中??刂疲–ontroller)能夠了解為從用戶接收請(qǐng)求,將模型與視圖匹配在一起,共同完成用戶請(qǐng)求,劃分控制層作用很顯著,它清楚地告訴開發(fā)者,它僅是一個(gè)分發(fā)器,選擇什么樣模型,選擇什么樣視圖,能夠完成什么樣用戶請(qǐng)求??刂茖硬蛔魅魏螖?shù)據(jù)處理。比如,用戶點(diǎn)擊一個(gè)鏈接,控制層接收請(qǐng)求后,并不處理業(yè)務(wù)信息,它只把用戶信息傳遞給模型,告訴模型做什么,把符合要求視圖返回給用戶。所以,一個(gè)模型可能對(duì)應(yīng)多個(gè)視圖,一個(gè)視圖可能對(duì)應(yīng)多個(gè)模型??傊P?、視圖與控制器分離,使得一個(gè)模型能夠具備多個(gè)顯示視圖。假如用戶經(jīng)過某個(gè)視圖控制器改變了模型數(shù)據(jù),全部其余依賴于這些數(shù)據(jù)視圖都反應(yīng)到這些改變。所以,不論何時(shí)發(fā)生了何種數(shù)據(jù)改變,控制器都會(huì)將改變通知全部視圖,造成顯示更新。這實(shí)際上是一個(gè)模型改變—傳輸機(jī)制。模型、視圖、控制器三者之間關(guān)系和各自主要功效,以下列圖(圖2)所表示:圖2:模型、視圖、控制器關(guān)系圖7.3MVC在PHP中實(shí)現(xiàn)A與Java中都提供了一個(gè)很好實(shí)現(xiàn)這種經(jīng)典設(shè)計(jì)模式類似環(huán)境?,F(xiàn)在,PHP中有許多MVC模式框架,比如著名phrame、phpmvc、mojavi。它們所提供是一個(gè)半成品,只要按思緒走下流程就是一個(gè)MVC實(shí)現(xiàn)?,F(xiàn)實(shí)中有很多東西需要定制,而且對(duì)于小型和一些中型項(xiàng)目來說,利用這么一個(gè)MVC框架,所帶來益處比開銷要小得多。不過MVC思想應(yīng)用是比較通用。(1)視圖視圖是模型表示,它提供用戶交互界面。使用多個(gè)包含單顯示頁(yè)面用戶部件,復(fù)雜Web頁(yè)面能夠展示來自多個(gè)數(shù)據(jù)源內(nèi)容,而且網(wǎng)頁(yè)設(shè)計(jì)人員、美工都能獨(dú)自參加這些Web頁(yè)面開發(fā)和維護(hù)。PHP中有兩種實(shí)現(xiàn)View方法,一個(gè)是TemplateView,另一個(gè)就是TransformView。a.TemplateView:用于Web應(yīng)用View中使用主要模式就是TemplateView,這個(gè)模式使用一個(gè)模版文件(通常是html),它包含了一些特殊標(biāo)識(shí),當(dāng)TemplateView被執(zhí)行時(shí),這些特殊標(biāo)識(shí)就被model里對(duì)應(yīng)數(shù)據(jù)替換并顯示出來。PHP本身就是一個(gè)特定類型實(shí)例模版,叫做服務(wù)器頁(yè)。有一些復(fù)雜模版引擎甚至是"PlainOldPHPPages"(popp)模板不輕易變換和替換,而且嵌入了控制結(jié)構(gòu)和其余邏輯到頁(yè)面里。即使這么做在移植性上有些欠缺,不過對(duì)于分離思想還是有幫助[4]。在PHP中用Smarty實(shí)現(xiàn)TemplateView是比很好方法,它所使用模板文件是一個(gè)HTML和特定標(biāo)識(shí)符混合。這些標(biāo)識(shí)符不但僅是變量替換,而且還能夠表示一些簡(jiǎn)單邏輯應(yīng)用。有些人曾經(jīng)懷疑Smarty作MVC視圖適用性,因?yàn)镸VC強(qiáng)調(diào)嚴(yán)格表現(xiàn)層與邏輯層分離。而Smarty在模板中加入邏輯應(yīng)用僅僅是顯示上邏輯判斷,與業(yè)務(wù)邏輯沒有任何關(guān)系。這么一來,不但徹底地實(shí)現(xiàn)了程序代碼與HTML代碼分離,而且愈加符合MVC“分離”思想。需要注意是,Smarty所謂“編譯”實(shí)際上是把數(shù)據(jù)和HTML組合成最原始嵌套模式,即僅是echo語句與HTML組合,以提升效率。b.TransformView:TransformView從Model中提取數(shù)據(jù),然后把數(shù)據(jù)轉(zhuǎn)換成需要輸出格式。它實(shí)際上是使用一個(gè)語言逐一遍歷數(shù)據(jù)元素,然后集中輸出。TemplateView與TransformView之間差異就是數(shù)據(jù)流方

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論