PHP學(xué)習(xí)網(wǎng)的設(shè)計(jì)與實(shí)現(xiàn).doc_第1頁(yè)
PHP學(xué)習(xí)網(wǎng)的設(shè)計(jì)與實(shí)現(xiàn).doc_第2頁(yè)
PHP學(xué)習(xí)網(wǎng)的設(shè)計(jì)與實(shí)現(xiàn).doc_第3頁(yè)
PHP學(xué)習(xí)網(wǎng)的設(shè)計(jì)與實(shí)現(xiàn).doc_第4頁(yè)
PHP學(xué)習(xí)網(wǎng)的設(shè)計(jì)與實(shí)現(xiàn).doc_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余36頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

本科生畢業(yè)論文 PHP學(xué)習(xí)網(wǎng)的設(shè)計(jì)與實(shí)現(xiàn)Design and Implementation of PHP Learning Website 所在系(院):數(shù)學(xué)與信息技術(shù)學(xué)院 學(xué) 生: 指 導(dǎo) 教 師: 研究起止日期:二九年十一月至二一年五月 二一年五月 學(xué)位論文獨(dú)創(chuàng)性聲明本人鄭重聲明:1. 堅(jiān)持以“求實(shí)、創(chuàng)新”的科學(xué)精神從事研究工作。2. 本論文是我個(gè)人在導(dǎo)師指導(dǎo)下進(jìn)行的研究工作和取得的研究成果。3. 本論文中除引文外,所有實(shí)驗(yàn)、數(shù)據(jù)和有關(guān)材料均是真實(shí)的。4. 本論文中除引文和致謝的內(nèi)容外,不包含其他人或其它機(jī)構(gòu)已經(jīng)發(fā)表或撰寫(xiě)過(guò)的研究成果。5. 其他同志對(duì)本研究所做的貢獻(xiàn)均已在論文中作了聲明并表示了謝意。作者簽名:日 期:摘 要近年來(lái),PHP網(wǎng)絡(luò)編程語(yǔ)言發(fā)展迅速,逐漸成為網(wǎng)絡(luò)開(kāi)發(fā)的主流語(yǔ)言之一。建立一個(gè)PHP語(yǔ)言的學(xué)習(xí)網(wǎng)站,為熱衷PHP語(yǔ)言的朋友提供一個(gè)互相學(xué)習(xí),互相交流的平臺(tái)是很有必要的。PHP學(xué)習(xí)網(wǎng)為PHP學(xué)習(xí)愛(ài)好者提供PHP教程,文獻(xiàn)書(shū)籍,學(xué)習(xí)網(wǎng)站,資源下載,論壇交流等服務(wù)。本文運(yùn)用軟件工程的設(shè)計(jì)思想,使用當(dāng)前流行的LAMP(Linux+Apache+MySQL+PHP)組合,設(shè)計(jì)了一個(gè)簡(jiǎn)單實(shí)用的PHP學(xué)習(xí)網(wǎng)站。本文主要闡述了系統(tǒng)的開(kāi)發(fā)背景,介紹了PHP學(xué)習(xí)網(wǎng)站實(shí)現(xiàn)的開(kāi)發(fā)環(huán)境,描述了系統(tǒng)實(shí)現(xiàn)的結(jié)構(gòu)框架。在系統(tǒng)實(shí)現(xiàn)部分,詳細(xì)介紹了本文的關(guān)鍵技術(shù)。關(guān)鍵詞:PHP學(xué)習(xí)網(wǎng); PHP教程 ; 文獻(xiàn)書(shū)籍 ;論壇AbstractNowadays,PHP network programming language has become one of the mainstream languages of the network development with its rapid development. It is quite necessary to estabish a PHP learning website to provide a mutual study as well as mutual communication forum for the PHP language lover.PHP learning website provides services like PHP tutorial, literature books, study websites, source download and forum communication and so on for PHP language lover. The paper uses the design of Software Engineering and the popular LAMP(Linux+Apache+MySQL+PHP) combination to desgin a simple but useful PHP learning website.The paper mainly explained the background of the system development, introduced the development environment of PHP learning website and described the structural framework of the system. In the part of the system implementation, this paper introdeced the key technologies of the system in detail.Key Words: PHP learning website; PHP tutorial; literature books; Apache; forum目 錄第一章 緒論11.1 研究背景11.2 學(xué)習(xí)網(wǎng)站的現(xiàn)狀11.3 學(xué)習(xí)網(wǎng)站存在的問(wèn)題11.3.1 內(nèi)容重復(fù)率高,資源質(zhì)量不過(guò)關(guān)11.3.2 網(wǎng)站欠缺管理,更新速度慢21.3.3 缺乏個(gè)性化的學(xué)習(xí)評(píng)價(jià)與指導(dǎo)21.3.4 使用率低,交流功能沒(méi)有充分發(fā)揮作用21.4 本文的組織結(jié)構(gòu)3第二章 系統(tǒng)開(kāi)發(fā)環(huán)境42.1 PHP語(yǔ)言簡(jiǎn)介42.1.1 PHP的特點(diǎn)42.2 MySQL簡(jiǎn)介52.2.1 MySQL的特點(diǎn)52.3 JavaScript語(yǔ)言簡(jiǎn)介62.3.1 JavaScript的簡(jiǎn)介62.3.2 JavaScript的特點(diǎn)62.4 HTML語(yǔ)言簡(jiǎn)介62.4.1 HTML語(yǔ)言的特點(diǎn)72.5 Apache環(huán)境配置72.6 PHP環(huán)境配置82.7 MySQL環(huán)境配置82.8 小結(jié)9第三章 系統(tǒng)分析與設(shè)計(jì)103.1 需求分析103.2 總體設(shè)計(jì)103.2.1 游客/未登錄用戶模塊113.2.2 登錄用戶模塊123.2.3 管理員模塊123.3 數(shù)據(jù)庫(kù)設(shè)計(jì)與實(shí)現(xiàn)133.3.1 數(shù)據(jù)庫(kù)設(shè)計(jì)原則133.3.2 數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)143.3.3 數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)163.4 本章小結(jié)18第四章 系統(tǒng)功能的具體實(shí)現(xiàn)194.1 系統(tǒng)前臺(tái)設(shè)計(jì)194.1.1 系統(tǒng)前臺(tái)首頁(yè)194.1.2 會(huì)員登錄設(shè)計(jì)204.1.3 會(huì)員注冊(cè)設(shè)計(jì)214.2 系統(tǒng)后臺(tái)設(shè)計(jì)244.2.1 系統(tǒng)后臺(tái)登錄設(shè)計(jì)244.2.2 系統(tǒng)后臺(tái)首頁(yè)設(shè)計(jì)254.2.3 后臺(tái)教程管理264.2.4 數(shù)據(jù)分頁(yè)功能284.3 小結(jié)29第五章 總 結(jié)30致 謝31參考文獻(xiàn)32南京曉莊學(xué)院2010屆畢業(yè)論文第一章 緒論1.1 研究背景隨著計(jì)算機(jī)技術(shù)和通信技術(shù)的迅猛發(fā)展,計(jì)算機(jī)網(wǎng)絡(luò)已深入到人們的工作、生活與學(xué)習(xí)中;我們?cè)诰W(wǎng)絡(luò)上辦公、在網(wǎng)絡(luò)上購(gòu)物、在網(wǎng)絡(luò)上學(xué)習(xí);其中網(wǎng)絡(luò)在線學(xué)習(xí)在近年已經(jīng)是傳統(tǒng)面授學(xué)習(xí)有力的補(bǔ)充,我們不再局限于天天跑到教室,在家里一樣可以完成相關(guān)內(nèi)容的學(xué)習(xí),或者在完成系統(tǒng)面授的基礎(chǔ)上回家再利用在線學(xué)習(xí)進(jìn)行深化并與授課老師進(jìn)行在線交流等??傊ㄟ^(guò)網(wǎng)絡(luò),人們可以更快更方便地找到自己想要的資源,更有效的利用網(wǎng)絡(luò)去輔助自己的學(xué)習(xí)。各種各樣的學(xué)習(xí)網(wǎng)站的出現(xiàn),不僅能使教師更方便地獲取教學(xué)資源,更能為學(xué)生提供了一個(gè)學(xué)習(xí)的平臺(tái),讓學(xué)生通過(guò)自主探究的方式提高自己的學(xué)習(xí),PHP網(wǎng)絡(luò)編程在曉莊已經(jīng)有好幾年的歷史,我們?cè)趯W(xué)習(xí)、授課、項(xiàng)目的基礎(chǔ)上已經(jīng)積累了大量關(guān)于PHP學(xué)習(xí)的資料,我們?cè)谡搲幸舶l(fā)過(guò)很多關(guān)于PHP與Linux的文章,幫助不少網(wǎng)友解決了相關(guān)技術(shù)問(wèn)題,希望通過(guò)建立一個(gè)PHP學(xué)習(xí)網(wǎng)來(lái)幫助曉莊和全國(guó)愛(ài)好PHP的同學(xué)或者工作人員學(xué)習(xí)PHP。1.2 學(xué)習(xí)網(wǎng)站的現(xiàn)狀隨著Internet使用的普及,大量的學(xué)習(xí)網(wǎng)站也如雨后春筍般出現(xiàn),人們很容易就能從一些大型搜索引擎中找出許許多多的學(xué)習(xí)網(wǎng)站,如在百度中輸入“PHP學(xué)習(xí)網(wǎng)站”,就能得到約614,000個(gè)結(jié)果,可見(jiàn)學(xué)習(xí)網(wǎng)站的發(fā)展速度非常的快。而如前所述,學(xué)習(xí)網(wǎng)站的種類很多,除了按網(wǎng)站主要功能可分為資源型、論壇型、輔助學(xué)習(xí)型和綜合型外,還可根據(jù)網(wǎng)站所包含的學(xué)科種類分為單學(xué)科型和多學(xué)科型,還可根據(jù)網(wǎng)站的內(nèi)容而分為各種專題型的學(xué)習(xí)資源網(wǎng)站。各式各樣的學(xué)習(xí)網(wǎng)站能為各種使用者提供更好更適合的幫助。幾乎所有的學(xué)習(xí)網(wǎng)站都能為使用者提供豐富的文本資源,如教案學(xué)案、試題、論文等等。而隨著網(wǎng)絡(luò)的發(fā)展和人們需求的增長(zhǎng),部分的學(xué)習(xí)網(wǎng)站更著重于提供圖片、視頻和flash動(dòng)畫(huà)等多媒體資源,而近幾年還出現(xiàn)了遠(yuǎn)程教學(xué)的網(wǎng)站。這不僅為教師的課堂教學(xué)提供了更好的資源,還可以讓學(xué)生在課前和課后能以更多的方式去學(xué)習(xí)和理解課本的知識(shí),而對(duì)于學(xué)習(xí)需要從微觀和實(shí)驗(yàn)中理解的PHP知識(shí)來(lái)說(shuō),也顯得更方便、更容易了。除了提供資源的功能外,部分網(wǎng)站還充分利用了互聯(lián)網(wǎng)的優(yōu)勢(shì),設(shè)置了論壇交流、在線測(cè)試、在線診斷、資源上傳共享等功能模塊,使學(xué)生在學(xué)習(xí)上能夠得到多方面的幫助,也便于教師與教師之間、教師與學(xué)生之間、學(xué)生與學(xué)生之間進(jìn)行溝通交流,也能使家長(zhǎng)得到更多教育信息,幫助孩子的學(xué)習(xí)與升學(xué)等等。1.3 學(xué)習(xí)網(wǎng)站存在的問(wèn)題1.3.1 內(nèi)容重復(fù)率高,資源質(zhì)量不過(guò)關(guān)學(xué)習(xí)網(wǎng)站都充斥著許許多多的資源,但極少數(shù)網(wǎng)站會(huì)對(duì)資源進(jìn)行系統(tǒng)的整理與審查,這樣就難以避免地導(dǎo)致資源內(nèi)容的重復(fù)率高,質(zhì)量低劣,甚至有些教案或試題還存在內(nèi)容不全、錯(cuò)漏百出等毛病。而針對(duì)化學(xué)學(xué)科的資源,還存在著PHP程序?qū)懖灰?guī)范、PHP知識(shí)不正確等科學(xué)性的錯(cuò)誤。而且在PHP學(xué)習(xí)中占很大比重的程序書(shū)寫(xiě),卻只有極少數(shù)的學(xué)習(xí)網(wǎng)站有針對(duì)性的內(nèi)容和板塊對(duì)學(xué)生進(jìn)行輔導(dǎo)。對(duì)于占網(wǎng)站內(nèi)容比重如此大的資源板塊,如果沒(méi)有對(duì)質(zhì)量進(jìn)行好把關(guān),那使用者很快就會(huì)對(duì)這個(gè)網(wǎng)站失去信心。1.3.2 網(wǎng)站欠缺管理,更新速度慢隨著教育事業(yè)的發(fā)展,教材的版本和內(nèi)容也在不斷的改進(jìn),學(xué)生和教師都希望能夠得到最新、最貼近課本內(nèi)容的資源。但在調(diào)查過(guò)程中,有一半以上的網(wǎng)站更新速度很慢,有部分網(wǎng)站甚至在過(guò)去一兩年都沒(méi)有進(jìn)行更新,也就是說(shuō)這些網(wǎng)站已經(jīng)處于無(wú)人管理的狀態(tài)。而更新較快的網(wǎng)站也多數(shù)是隔幾天更新一次,部分網(wǎng)站的更新周期更長(zhǎng)達(dá)一周甚至一個(gè)月,而且也并不是網(wǎng)站內(nèi)每個(gè)板塊都有更新。而對(duì)于比較受歡迎的網(wǎng)站(如開(kāi)心網(wǎng))和熱門網(wǎng)絡(luò)游戲,更新速度都非??欤_(kāi)心網(wǎng)幾乎每天都進(jìn)行更新,還把更新的內(nèi)容發(fā)布在網(wǎng)站首頁(yè)。持續(xù)的更新能讓使用者對(duì)網(wǎng)站保持著新鮮感,盡管是很微小的更新,都能讓使用者感到這個(gè)網(wǎng)站管理完善,具有使用價(jià)值。因此,想要網(wǎng)站可持續(xù)發(fā)展,及時(shí)的更新是必不可少的。另一方面,部分網(wǎng)站還存在結(jié)構(gòu)不清晰,內(nèi)容編排混亂,讓使用者難以在短時(shí)間內(nèi)搜索到自己想要的資料,有些網(wǎng)站難以打開(kāi)甚至已經(jīng)無(wú)法打開(kāi)和正常使用了,這也反映出網(wǎng)站缺乏管理的問(wèn)題。1.3.3 缺乏個(gè)性化的學(xué)習(xí)評(píng)價(jià)與指導(dǎo)對(duì)于學(xué)生來(lái)說(shuō),他們不僅僅希望能從網(wǎng)上獲得好的學(xué)習(xí)資源,更希望能得到進(jìn)一步的學(xué)習(xí)評(píng)價(jià)與指導(dǎo)。但現(xiàn)時(shí)國(guó)內(nèi)的學(xué)習(xí)網(wǎng)站,基本上只為學(xué)生提供資源,而對(duì)于習(xí)題,也只是簡(jiǎn)單的給出一個(gè)答案,并沒(méi)有更多的指導(dǎo)。我們都知道,對(duì)于數(shù)學(xué)、物理、化學(xué)等理科的學(xué)習(xí),學(xué)生要學(xué)習(xí)的不是一個(gè)簡(jiǎn)單的答案,更重要的是要學(xué)會(huì)如何得到答案、學(xué)會(huì)分析和解決問(wèn)題。在傳統(tǒng)的教學(xué)中,教師能根據(jù)學(xué)生的學(xué)習(xí)情況給予合適的評(píng)價(jià)與指導(dǎo),也能通過(guò)逐步的分析講解讓學(xué)生更容易理解學(xué)習(xí)內(nèi)容。很多學(xué)習(xí)網(wǎng)站并沒(méi)有很好的利用網(wǎng)絡(luò)和技術(shù)的優(yōu)勢(shì),只是簡(jiǎn)單的“課本搬家”,對(duì)學(xué)生的學(xué)習(xí)幫助不大;部分網(wǎng)站設(shè)置了在線測(cè)試和評(píng)價(jià)板塊,但是往往評(píng)價(jià)技術(shù)不完善,方式單一,缺乏個(gè)性化的指導(dǎo),甚至連簡(jiǎn)單的逐步解題分析(像Cramster學(xué)習(xí)網(wǎng)站中的解題指導(dǎo))都沒(méi)有,不禁讓人覺(jué)得學(xué)習(xí)網(wǎng)站還比不上一本好的輔導(dǎo)書(shū)!因此,學(xué)習(xí)網(wǎng)站不但要從內(nèi)容上下功夫,更要從使用者的需要出發(fā),加強(qiáng)在線的評(píng)價(jià)功能,為使用者提供個(gè)性化的評(píng)價(jià)與指導(dǎo),才能真正發(fā)揮學(xué)習(xí)網(wǎng)站的作用,才能更好的促進(jìn)學(xué)習(xí)網(wǎng)站的發(fā)展。1.3.4 使用率低,交流功能沒(méi)有充分發(fā)揮作用導(dǎo)致學(xué)習(xí)網(wǎng)站使用率低的原因,首先包含了上面闡述的三個(gè)問(wèn)題。另一方面,部分的學(xué)習(xí)網(wǎng)站只是建設(shè)者為了上一節(jié)課而建立的,并沒(méi)有作后續(xù)的管理工作,上完課了,網(wǎng)站就沒(méi)有用了??偟膩?lái)說(shuō),學(xué)習(xí)網(wǎng)站普遍存在缺乏趣味性、質(zhì)量不高等毛病,讓使用者失去了持續(xù)使用的信心。大部分的學(xué)習(xí)網(wǎng)站都設(shè)置了論壇的板塊,供使用者進(jìn)行互相交流和資源共享,但是這個(gè)板塊的使用率卻不高。Internet的出現(xiàn),使人們的溝通交流變得簡(jiǎn)單,身處異地的人們通過(guò)Internet就能交流??墒呛芏鄬W(xué)習(xí)網(wǎng)站中的論壇板塊中,無(wú)論是帖子數(shù)還是瀏覽和回復(fù)的數(shù)量都不多,如百度中設(shè)置的“知道”板塊,本來(lái)是非常好的一個(gè)建設(shè),能幫助學(xué)生解決學(xué)習(xí)中的難題,但是其中提出的問(wèn)題幾乎沒(méi)有人回答,長(zhǎng)此下去也就沒(méi)有人再提出問(wèn)題了。導(dǎo)致這種現(xiàn)象的原因有很多,如使用者少、網(wǎng)站管理不完善等等,但是主要原因可能是網(wǎng)站缺乏對(duì)學(xué)生學(xué)習(xí)的評(píng)價(jià)與指導(dǎo),缺乏趣味性,學(xué)生并沒(méi)有在學(xué)習(xí)上得到真正的幫助。也就是說(shuō),使用這個(gè)網(wǎng)站并沒(méi)有讓人產(chǎn)生興趣、共鳴和依賴性,交流當(dāng)然就會(huì)少了。1.4 本文的組織結(jié)構(gòu)本文的組織結(jié)構(gòu)如下:1、緒論。綜述了本文的研究背景,分析了當(dāng)前學(xué)習(xí)網(wǎng)站的現(xiàn)狀;當(dāng)前學(xué)習(xí)網(wǎng)站存在的問(wèn)題。2、系統(tǒng)開(kāi)發(fā)工具(技術(shù))介紹。介紹了本文開(kāi)發(fā)所用的的工具,包括HTML,PHP,MySQL 和 JavaScript。3、系統(tǒng)開(kāi)發(fā)環(huán)境介紹。介紹了本文開(kāi)發(fā)所用的系統(tǒng)開(kāi)發(fā)環(huán)境,簡(jiǎn)要介紹了LAMP(Linux+Apache+MySQL+PHP)開(kāi)發(fā)環(huán)境,并對(duì)環(huán)境的配置進(jìn)行了簡(jiǎn)要介紹。4、系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。介紹了PHP學(xué)習(xí)網(wǎng)站的思路并進(jìn)行了需求分析,在需求分析的基礎(chǔ)上進(jìn)行了系統(tǒng)功能分析、系統(tǒng)功能模塊設(shè)計(jì)以及數(shù)據(jù)庫(kù)需求分析等相關(guān)方面;該部分是全文的主旨。5、系統(tǒng)功能模塊具體實(shí)現(xiàn)。對(duì)開(kāi)發(fā)中一些主要具體功能的實(shí)現(xiàn)進(jìn)行描述。涉及到數(shù)據(jù)庫(kù)詳細(xì)設(shè)計(jì),系統(tǒng)詳細(xì)模塊設(shè)計(jì)等相關(guān)知識(shí)。6、總結(jié)與展望。對(duì)整個(gè)論文及設(shè)計(jì)過(guò)程進(jìn)行總結(jié),指出系統(tǒng)設(shè)計(jì)過(guò)程的心得以及設(shè)計(jì)中存在的不足;后期還有待完善的地方等。 第二章 系統(tǒng)開(kāi)發(fā)環(huán)境PHP學(xué)習(xí)網(wǎng)以LAMP(Linux+Apache+MySQL+PHP)作為平臺(tái),涉及到PHP語(yǔ)言、MySQL數(shù)據(jù)庫(kù)、JavaScript語(yǔ)言、HTML語(yǔ)言。2.1 PHP語(yǔ)言簡(jiǎn)介PHP,一個(gè)嵌套的縮寫(xiě)名稱,是英文 “超級(jí)文本預(yù)處理語(yǔ)言”(PHP: Hypertext Preprocessor)的縮寫(xiě)。PHP 是一種 HTML 內(nèi)嵌式的語(yǔ)言,PHP與微軟的ASP頗有幾分相似,都是一種在服務(wù)器端執(zhí)行的“嵌入HTML文檔的腳本語(yǔ)言”,語(yǔ)言的風(fēng)格有類似于C語(yǔ)言,現(xiàn)在被很多的網(wǎng)站編程人員廣泛的運(yùn)用。PHP 獨(dú)特的語(yǔ)法混合了 C、Java、Perl 以及 PHP 自創(chuàng)新的語(yǔ)法。它可以比 CGI 或者 Perl 更快速的執(zhí)行動(dòng)態(tài)網(wǎng)頁(yè)。用PHP做出的動(dòng)態(tài)頁(yè)面與其他的編程語(yǔ)言相比,PHP是將程序嵌入到HTML文檔中去執(zhí)行,執(zhí)行效率比完全生成HTML標(biāo)記的CGI要高許多;與同樣是嵌入HTML文檔的腳本語(yǔ)言JavaScript相比,PHP在服務(wù)器端執(zhí)行,成分利用了服務(wù)器的性能;PHP執(zhí)行引擎還會(huì)將用戶經(jīng)常訪問(wèn)的PHP程序駐留在內(nèi)存中,其他用戶在一次訪問(wèn)這個(gè)程序時(shí)就不需要誠(chéng)信編譯程序了,只要直接執(zhí)行內(nèi)存中的代碼就可以了,這也是PHP高效率的體現(xiàn)之一。PHP具有非常強(qiáng)大的功能,所有的CGI或者JavaScript的功能PHP都能實(shí)現(xiàn),而且支持幾乎所有流行的數(shù)據(jù)庫(kù)以及操作系統(tǒng)。2.1.1 PHP的特點(diǎn)開(kāi)放的源代碼:所有的PHP源代碼事實(shí)上都可以得到。 PHP是免費(fèi)的?;诜?wù)器端:由于PHP是運(yùn)行在服務(wù)器端的,即使再多的用戶,再?gòu)?fù)雜的程序也不會(huì)影響運(yùn)行的速度??缙脚_(tái):PHP可以運(yùn)行在UNIX、LINUX、WINDOWS下。 嵌入HTML:因?yàn)镻HP可以嵌入HTML語(yǔ)言,所以學(xué)習(xí)起來(lái)并不困難。 簡(jiǎn)單的語(yǔ)言:PHP堅(jiān)持腳本語(yǔ)言為主,與Java以C+不同。效率高:PHP消耗相當(dāng)少的系統(tǒng)資源。 PHP 是一種用來(lái)制作動(dòng)態(tài)網(wǎng)頁(yè)的服務(wù)器端腳本語(yǔ)言。你通過(guò)PHP和HTML創(chuàng)建頁(yè)面。當(dāng)訪問(wèn)者打開(kāi)網(wǎng)頁(yè)時(shí),服務(wù)器端便會(huì)處理 PHP 指令,然后把其處理結(jié)果送到訪問(wèn)者的瀏覽器上面,就好像 ASP一樣。 然而,PHP 跟 ASP 不一樣的地方在于,它是跨平臺(tái)的開(kāi)放源代碼。PHP 可以在 Windows NT 以及很多不同的 Unix 版本中執(zhí)行,它也可以被編譯為一個(gè) Apache 模塊,或者是一個(gè)CGI二進(jìn)制文件。當(dāng)被編譯為 Apache ??鞎r(shí),PHP 尤其輕巧方便。它沒(méi)有任何繁瑣程序所產(chǎn)生的負(fù)擔(dān),因此可以很快的返回結(jié)果,同時(shí)也不需為了保持較小的服務(wù)器內(nèi)存映象,而去調(diào)整mod_perl。除了能夠用來(lái)產(chǎn)生你的網(wǎng)頁(yè)的內(nèi)容之外,PHP 也可以用來(lái)傳送 HTTP頭。你可以設(shè)定 cookies,授權(quán)管理,并將使用者重定向至新的頁(yè)面。它也能很好的訪問(wèn)很多數(shù)據(jù)庫(kù)及ODBC。另外還可與各式各樣的外部庫(kù)集成,由此可以讓你做幾乎任何事情,從創(chuàng)建 PDF 文件到解析XML。PHP 代碼就嵌在Web頁(yè)面中,因此你不必為它建立一個(gè)特別的開(kāi)發(fā)環(huán)境或IDE。你用標(biāo)志PHP代碼(也可以將PHP設(shè)定成使用ASP形式的標(biāo)志甚至是用)。PHP引擎會(huì)處理這些標(biāo)志之間的任何東西。PHP語(yǔ)言的語(yǔ)法跟C以及Perl很像。在使用前,你無(wú)須聲明變量。要?jiǎng)?chuàng)建陣列以及散列(關(guān)聯(lián)性陣列)也很快。PHP的初步面向?qū)ο筇匦赃€提供了組織及封裝代碼的簡(jiǎn)便方法。你可以在其官方網(wǎng)站下載取得一份包括PHP所有函數(shù)和特性的用戶手冊(cè)。2.2 MySQL簡(jiǎn)介MySQL是最受歡迎的開(kāi)源SQL數(shù)據(jù)庫(kù)管理系統(tǒng),它由MySQL AB開(kāi)發(fā)、發(fā)布和支持。MySQL AB是一家基于MySQL開(kāi)發(fā)人員的商業(yè)公司,它是一家使用了一種成功的商業(yè)模式來(lái)結(jié)合開(kāi)源價(jià)值和方法論的第二代開(kāi)源公司。MySQL是MySQL AB的注冊(cè)商標(biāo)。MySQL是一個(gè)快速的、多線程、多用戶和健壯的SQL數(shù)據(jù)庫(kù)服務(wù)器。MySQL服務(wù)器支持關(guān)鍵任務(wù)、重負(fù)載生產(chǎn)系統(tǒng)的使用,也可以將它嵌入到一個(gè)大配置(mass-deployed)的軟件中去。2.2.1 MySQL的特點(diǎn)MySQL作為后臺(tái)數(shù)據(jù)庫(kù)工具,它功能遠(yuǎn)比Fox、Access強(qiáng)大,并提供了許多標(biāo)準(zhǔn)的關(guān)系數(shù)據(jù)庫(kù)管理功能的支持。它各種關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)適應(yīng)于各種硬件平臺(tái),包括Unix,PC和主機(jī)系統(tǒng)。它的特點(diǎn)有以下幾點(diǎn):(1)集成性 集成性即集多種應(yīng)用數(shù)據(jù)于一體。集成性的主要表現(xiàn)為三個(gè)方面。首先采用統(tǒng)一的數(shù)據(jù)結(jié)構(gòu);其次它建立一個(gè)全局統(tǒng)一的數(shù)據(jù)模式,即不僅可以建立一個(gè)全局性的數(shù)據(jù)結(jié)構(gòu)還可以建立數(shù)據(jù)間存在的語(yǔ)義聯(lián)系,從而構(gòu)成一個(gè)內(nèi)在緊密聯(lián)系的數(shù)據(jù)整體;最后它可以根據(jù)每個(gè)應(yīng)用的數(shù)據(jù)需要構(gòu)作局部模式,這種從局部到全局,再?gòu)娜值骄植康倪^(guò)程是數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)集成性的主要特征。(2)高共享性和低冗余性數(shù)據(jù)共享性主要表現(xiàn)在數(shù)據(jù)多個(gè)應(yīng)用程序使用,并可用于不同的目的;數(shù)據(jù)可以在已有數(shù)據(jù)庫(kù)系統(tǒng)上開(kāi)發(fā)新的應(yīng)用程序;它可以向外界提供信息服務(wù)功能。數(shù)據(jù)冗余指同一個(gè)數(shù)據(jù)在不同的地方出現(xiàn)了重復(fù)儲(chǔ)存。數(shù)據(jù)庫(kù)系統(tǒng)所具有的高共享性和低冗余性不僅可以減少不必要的存儲(chǔ)空間,更為重要的是可以避免數(shù)據(jù)的不一致性。(3)數(shù)據(jù)獨(dú)立性數(shù)據(jù)獨(dú)立性指數(shù)據(jù)庫(kù)中的數(shù)據(jù)與使用這些數(shù)據(jù)的應(yīng)用程序之間的互不依賴性,即數(shù)據(jù)或數(shù)據(jù)結(jié)構(gòu)的改變不會(huì)導(dǎo)致對(duì)使用這些數(shù)據(jù)的應(yīng)用程序的修改,反之亦然。數(shù)據(jù)獨(dú)立性包括物理獨(dú)立性和邏輯獨(dú)立性。物理獨(dú)立性是指數(shù)據(jù)的物理結(jié)構(gòu)(包括存儲(chǔ)結(jié)構(gòu)和存取方式)的改變,不影響數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu),從而不致引起應(yīng)用程序的變化。邏輯獨(dú)立性指數(shù)據(jù)庫(kù)總體邏輯結(jié)構(gòu)的改變,如修改數(shù)據(jù)模式,增加新的數(shù)據(jù)結(jié)構(gòu),改變數(shù)據(jù)間聯(lián)系等不需要相應(yīng)修改應(yīng)用程序。(4)數(shù)據(jù)的統(tǒng)一管理與控制數(shù)據(jù)的統(tǒng)一管理與控制表現(xiàn)在四個(gè)方面:數(shù)據(jù)的完整性檢查,即對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)正確性作檢查以確保數(shù)據(jù)的正確;數(shù)據(jù)的安全性保護(hù),它對(duì)數(shù)據(jù)庫(kù)訪問(wèn)者作檢查以防止非法訪問(wèn);并發(fā)控制,它對(duì)多個(gè)應(yīng)用并發(fā)訪問(wèn)所產(chǎn)生的相互干擾作控制以保證其正確性;數(shù)據(jù)庫(kù)故障恢復(fù),它對(duì)遭受破壞的數(shù)據(jù)具有恢復(fù)能力,使數(shù)據(jù)庫(kù)具有抗破壞性。2.3 JavaScript語(yǔ)言簡(jiǎn)介2.3.1 JavaScript的簡(jiǎn)介JavaScript是一種解釋性的,基于對(duì)象的腳本語(yǔ)言(an interpreted, object-based scripting language)。JavaScript主要是基于客戶端運(yùn)行的,用戶點(diǎn)擊帶有JavaScript的網(wǎng)頁(yè),網(wǎng)頁(yè)里的JavaScript就傳到瀏覽器,由瀏覽器對(duì)此作處理。前面提到的下拉菜單、驗(yàn)證表單有效性等大量互動(dòng)性功能,都是在客戶端完成的,不需要和Web Server發(fā)生任何數(shù)據(jù)交換, 因此,減輕了Web Server的負(fù)擔(dān)。2.3.2 JavaScript的特點(diǎn)一種腳本編寫(xiě)語(yǔ)言: JavaScript是一種腳本語(yǔ)言,它采取小程序段的方式實(shí)現(xiàn)編程。像其它腳本語(yǔ)言一樣,JavaScript同樣也是一種解釋性語(yǔ)言,它提供了一個(gè)簡(jiǎn)易的開(kāi)發(fā)過(guò)程。它的基本結(jié)構(gòu)形式與C、C+、VB、Delphi十分相似。但它不需要先編譯,而是在程序運(yùn)行過(guò)程中被逐行地解釋。它與html表示結(jié)合在一起,從而方便用戶使用操作。基于對(duì)象的語(yǔ)言 :JavaScript是一種基于對(duì)象的語(yǔ)言,同時(shí)也可以看作一種面向?qū)ο蟮恼Z(yǔ)言。這意味著它能運(yùn)用自己已經(jīng)創(chuàng)建的對(duì)象。因此許多功能可以來(lái)自于腳本環(huán)境中對(duì)象的方法與腳本的相互作用。簡(jiǎn)單性 :JavaScript的簡(jiǎn)單性主要表現(xiàn)在:首先它是一種基于Java基本語(yǔ)句和控制流之上的簡(jiǎn)單而緊湊的設(shè)計(jì),從而對(duì)于學(xué)習(xí)Java是一種非常好的過(guò)渡。其次它的變量類型是采用弱類型,并未使用嚴(yán)格的數(shù)據(jù)類型。安全性 :JavaScript是一種安全性語(yǔ)言,它不允許訪問(wèn)本地硬盤,并不能將數(shù)據(jù)存入到服務(wù)器上,不允許對(duì)網(wǎng)絡(luò)文檔進(jìn)行修改和刪除,只能通過(guò)瀏覽器實(shí)現(xiàn)信息瀏覽或動(dòng)態(tài)交互。從而有效地防止數(shù)據(jù)的丟失。動(dòng)態(tài)性的 :JavaScript是動(dòng)態(tài)的,它可以直接對(duì)用戶或客戶輸入做出響應(yīng),無(wú)須經(jīng)過(guò)Web服務(wù)程序。它對(duì)用戶的反映響應(yīng),是采用以事件驅(qū)動(dòng)的方式進(jìn)行的。所謂事件驅(qū)動(dòng),就是指在主頁(yè)(Home Page)中執(zhí)行了某種操作所產(chǎn)生的動(dòng)作,這稱為事件。例如按下鼠標(biāo)、移動(dòng)窗口、選擇菜單等都可以視為事件。當(dāng)事件發(fā)生后,可能會(huì)引起相應(yīng)的事件響應(yīng)??缙脚_(tái)性 :JavaScript是依賴于瀏覽器本身,與操作環(huán)境無(wú)關(guān),只要能運(yùn)行瀏覽器的計(jì)算機(jī),并支持JavaScript的瀏覽器就可正確執(zhí)行。2.4 HTML語(yǔ)言簡(jiǎn)介HTML(Hyper Text Markup Language 超文本標(biāo)記語(yǔ)言)是一種用來(lái)制作超文本文檔的簡(jiǎn)單標(biāo)記語(yǔ)言。用HTML編寫(xiě)的超文本文檔稱為HTML文檔,它能獨(dú)立于各種操作系統(tǒng)平臺(tái)(如UNIX,WINDOWS等)。基于Web的信息處理,用得最多,最簡(jiǎn)單的,能夠被廣泛理解的語(yǔ)言就是HTML語(yǔ)言。通過(guò)HTML標(biāo)記可以實(shí)現(xiàn)在瀏覽器進(jìn)行文字、表格、聲音、圖像、動(dòng)畫(huà)、視頻等多媒體信息的檢索。HTML語(yǔ)言不但可以在任何文本編輯器中編輯,還可以在可視化網(wǎng)頁(yè)制作軟件中制作網(wǎng)頁(yè)時(shí)可以自動(dòng)生成,不用自己在文本編輯器中編寫(xiě);在文檔中可以直接嵌入視頻剪輯、音效片斷和其他應(yīng)用程序等。2.4.1 HTML語(yǔ)言的特點(diǎn)簡(jiǎn)易性:HTML版本升級(jí)采用超集方式,從而更加靈活方便??蓴U(kuò)展性:HTML語(yǔ)言的廣泛應(yīng)用帶來(lái)了加強(qiáng)功能,增加標(biāo)識(shí)符等要求,HTML采取子類元素的方式,為系統(tǒng)擴(kuò)展帶來(lái)保證。平臺(tái)無(wú)關(guān)性:雖然PC機(jī)大行其道,但使用MAC等其他機(jī)器的大有人在,HTML可以使用在廣泛的平臺(tái)上,這也是WWW盛行的另一個(gè)原因。 2.5 Apache環(huán)境配置 查詢Apache信息通過(guò)以下命令查看(如圖2-1)圖2-1 查看Apache版本信息圖測(cè)試可以在地址欄中輸入,會(huì)出現(xiàn)以下畫(huà)面。(如圖2-2)圖2-2 Apache 測(cè)試成功信息Apache的主要配置文件為/etc/httpd/conf/httpd.conf在配置文件中,如下幾項(xiàng)配置較為重要。Listen 80:Listen可以用來(lái)設(shè)置httpd監(jiān)聽(tīng)客戶端請(qǐng)求的IP地址和連接端口號(hào),默認(rèn)為80,可以修改端口號(hào),例如可以修改81,則訪問(wèn)地址為00:81,一般不用修改。DocumentRoot /var/www/html :DocumentRoot用于存放網(wǎng)頁(yè)數(shù)據(jù)的根目錄,所有來(lái)自客戶端的請(qǐng)求,都會(huì)以此目錄中的網(wǎng)頁(yè)來(lái)相應(yīng),默認(rèn)的目錄為/var/www/html,自行設(shè)計(jì)網(wǎng)頁(yè)文件以后應(yīng)該保存在此目錄中;當(dāng)然此處可以進(jìn)行修改,根目錄修改后,網(wǎng)頁(yè)文件應(yīng)保存在修改后的目錄中。DirectoryIndex index.html :index.php:DirectoryIndex選項(xiàng)可用來(lái)指定用戶連接到每個(gè)目錄時(shí)默認(rèn)打開(kāi)的網(wǎng)頁(yè)名稱,系統(tǒng)默認(rèn)為index.html,本機(jī)由于首頁(yè)為index.php 故在后面加上index.php。AddDefaultCharset UTF-8:配置文件中默認(rèn)字符集為UTF-8,在此由于使用方便以及對(duì)漢字的支持,我們將其修改為AddDefaultCharset GB23122.6 PHP環(huán)境配置輸入命令 rpm- q php,得到PHP的版本信息,如圖2-3圖2-3 查看PHP版本信息圖2.7 MySQL環(huán)境配置輸入命令 rpm q mysql,得到MySQL的版本信息,如圖2-4圖 2-4 MySQL版本信息若沒(méi)有安裝則使用rmp ivh mysql軟件包的全路徑名。在終端中使用命令/etc/rc.d/init.d/mysqld start即可以啟動(dòng)mysql數(shù)據(jù)庫(kù),使用mysql u root p即可進(jìn)入mysql數(shù)據(jù)庫(kù),如圖2-5所示:圖 2-5 進(jìn)入MySQL圖處于安全性考慮需要設(shè)置mysql密碼 mysqladmin u root password 即可。2.8 小結(jié)本章首先介紹了PHP語(yǔ)言,MySQL數(shù)據(jù)庫(kù),JavaScript語(yǔ)言和HTML語(yǔ)言,最后給出了配置Apache+MySQL+PHP的方法。 第三章 系統(tǒng)分析與設(shè)計(jì)3.1 需求分析PHP學(xué)習(xí)網(wǎng)站為PHP愛(ài)好者提供了學(xué)習(xí)和交流PHP的平臺(tái)。瀏覽者可以瀏覽系統(tǒng)前臺(tái)信息,管理員可以管理后臺(tái),及時(shí)更新前臺(tái)的內(nèi)容。系統(tǒng)前臺(tái)提供的具體功能如下:1、用戶注冊(cè)功能:注冊(cè)成為PHP學(xué)習(xí)網(wǎng)的合法用戶。2、用戶登錄功能:已注冊(cè)用戶可以輸入用戶名和密碼進(jìn)入PHP學(xué)習(xí)網(wǎng)站。3、用戶找回密碼功能:已注冊(cè)用戶如果忘記自己的密碼,正確填寫(xiě)用戶密碼問(wèn)題和用戶密碼答案后,可以修改自己的密碼。4、瀏覽PHP教程:普通瀏覽者可以查看PHP教程。5、瀏覽PHP文獻(xiàn)書(shū)籍:普通瀏覽者可以查看PHP文獻(xiàn)書(shū)籍。6、瀏覽PHP學(xué)習(xí)網(wǎng)站:普通瀏覽者可以瀏覽相關(guān)的PHP學(xué)習(xí)網(wǎng)站。7、論壇交流:PHP學(xué)習(xí)網(wǎng)站的用戶可以進(jìn)入論壇,發(fā)表帖子和回復(fù)帖子。普通瀏覽者只能查看帖子,不能發(fā)表和回復(fù)帖子。8、站內(nèi)搜索:普通訪問(wèn)者可以搜索相關(guān)的PHP教程,PHP文獻(xiàn)書(shū)籍和PHP網(wǎng)站。系統(tǒng)后臺(tái)管理模塊的具體功能如下:1、PHP教程管理:管理員在后臺(tái)可以添加,編輯教程,同時(shí)也可以刪除過(guò)時(shí)的教程。2、PHP文獻(xiàn)書(shū)籍管理:管理員在后臺(tái)可以添加,編輯和刪除相應(yīng)的文獻(xiàn)書(shū)籍。3、PHP學(xué)習(xí)網(wǎng)站管理:管理員在后臺(tái)可以添加,編輯教程和刪除相應(yīng)的學(xué)習(xí)網(wǎng)站。4、會(huì)員管理:管理員在后臺(tái)可以刪除會(huì)員。5、管理員管理:管理員在后臺(tái)可以添加,編輯和刪除相應(yīng)的管理員。6、論壇管理:管理員在后臺(tái)不僅可以對(duì)論壇欄目進(jìn)行管理,還可以對(duì)相應(yīng)的論壇帖子進(jìn)行管理。3.2 總體設(shè)計(jì)根據(jù)PHP學(xué)習(xí)網(wǎng)的功能需求,進(jìn)行系統(tǒng)分析設(shè)計(jì)。系統(tǒng)功能模塊圖如圖3-1所示:圖3-1 系統(tǒng)功能模塊圖3.2.1 游客/未登錄用戶模塊游客/未登錄用戶模塊:游客和未登錄的用戶都可以查看PHP教程,查看PHP書(shū)籍文獻(xiàn),查看PHP學(xué)習(xí)網(wǎng)站,下載PHP資源,瀏覽論壇,站內(nèi)搜索。模塊圖如圖3-2所示:圖3-2 游客/未登錄用戶功能模塊圖3.2.2 登錄用戶模塊登錄用戶模塊:游客可以首先注冊(cè)成為PHP學(xué)習(xí)網(wǎng)的會(huì)員,然后登錄。登錄用戶不僅可以查看PHP教程,查看PHP書(shū)籍文獻(xiàn),查看PHP學(xué)習(xí)網(wǎng)站,下載PHP資源,站內(nèi)搜索,還可以修改個(gè)人信息,進(jìn)入論壇發(fā)表帖子和回復(fù)帖子。模塊圖如圖3-2所示:圖3-3 登陸用戶功能模塊圖3.2.3 管理員模塊管理員模塊:管理員管理模塊也就是網(wǎng)站的后臺(tái),主要工作是負(fù)責(zé)對(duì)上面兩個(gè)模塊的管理與維護(hù)。包含管理PHP教程、管理文獻(xiàn)書(shū)籍、管理編輯學(xué)習(xí)網(wǎng)站、管理PHP資源、管理會(huì)員、管理論壇和管理管理員這七個(gè)子模塊。模塊圖如圖3-4所示: 圖3-4 管理員模塊圖3.3 數(shù)據(jù)庫(kù)設(shè)計(jì)與實(shí)現(xiàn)數(shù)據(jù)庫(kù)在系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)的好壞將直接對(duì)應(yīng)用系統(tǒng)的效率以及實(shí)現(xiàn)的效果產(chǎn)生影響。合理的數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)可以提高數(shù)據(jù)存儲(chǔ)的效率,保證數(shù)據(jù)的完整和一致。另外,合理的數(shù)據(jù)庫(kù)結(jié)構(gòu)將非常有利于程序的實(shí)現(xiàn)。設(shè)計(jì)數(shù)據(jù)庫(kù)系統(tǒng)時(shí)應(yīng)該首先充分了解用戶各個(gè)方面的需求,包括現(xiàn)有的以及將來(lái)可能增加的需求。3.3.1 數(shù)據(jù)庫(kù)設(shè)計(jì)原則在動(dòng)態(tài)網(wǎng)站的設(shè)計(jì)中,數(shù)據(jù)庫(kù)設(shè)計(jì)的重要性不言而喻。如果設(shè)計(jì)不當(dāng),查詢起來(lái)就非常吃力,程序的性能也會(huì)受到影響。無(wú)論你使用的是MySQL或者Oracle數(shù)據(jù)庫(kù),通過(guò)進(jìn)行正規(guī)化的表格設(shè)計(jì),可以令你的PHP代碼更具可讀性,更容易擴(kuò)展,從而也會(huì)提升應(yīng)用的性能。1合理使用索引 索引是數(shù)據(jù)庫(kù)中重要的數(shù)據(jù)結(jié)構(gòu),它的根本目的就是提高查詢效率。索引的使用要恰到好處,其使用原則如下: 在經(jīng)常進(jìn)行連接,但是沒(méi)有指定為外鍵的列上建立索引,而不經(jīng)常連接的字段則由優(yōu)化器自動(dòng)生成索引;在頻繁進(jìn)行排序或分組(即進(jìn)行g(shù)roup by或order by操作)的列上建立索引;在條件表達(dá)式中經(jīng)常用到的不同值較多的列上建立索引,在不同值少的列上不要建立索引。比如在文檔表的“文檔類型”列上只有“PHP教程”,“文獻(xiàn)書(shū)籍”,“學(xué)習(xí)網(wǎng)站”三個(gè)不同值,因此就無(wú)必要建立索引。如果建立索引不但不會(huì)提高查詢效率,反而會(huì)嚴(yán)重降低更新速度。 如果待排序的列有多個(gè),可以在這些列上建立復(fù)合索引。 2. 避免或簡(jiǎn)化排序 應(yīng)當(dāng)盡量簡(jiǎn)化或避免對(duì)大型表進(jìn)行重復(fù)的排序。當(dāng)能夠利用索引自動(dòng)以適當(dāng)?shù)拇涡虍a(chǎn)生輸出時(shí),優(yōu)化器就避免了排序這個(gè)步驟。為了避免不必要的排序,就要正確地增建索引,合理地合并數(shù)據(jù)庫(kù)表(盡管有時(shí)可能影響表的規(guī)范化,但相對(duì)于效率的提高是值得的)。如果排序不可避免,那么應(yīng)當(dāng)試圖簡(jiǎn)化它,如縮小排序的列的范圍等。 3消除對(duì)大型表行數(shù)據(jù)的順序存取 在嵌套查詢中,表的順序存取對(duì)查詢效率可能產(chǎn)生致命的影響。我們有時(shí)可以使用并集來(lái)避免順序存取。盡管也許在所有的檢查列上都有索引,但某些形式的where子句會(huì)強(qiáng)迫優(yōu)化器使用順序存取,這一點(diǎn)也應(yīng)注意。 4. 避免相關(guān)子查詢 如果一個(gè)列同時(shí)在主查詢和where子句中出現(xiàn),很可能當(dāng)主查詢中的列值改變之后,子查詢必須重新查詢一次。而且查詢嵌套層次越多,效率越低,因此應(yīng)當(dāng)盡量避免子查詢。如果子查詢不可避免,那么要在子查詢中過(guò)濾掉盡可能多的行。 5使用臨時(shí)表加速查詢 把表的一個(gè)子集進(jìn)行排序并創(chuàng)建臨時(shí)表,有時(shí)能加速查詢。它有助于避免多重排序操作,而且在其他方面還能簡(jiǎn)化優(yōu)化器的工作。臨時(shí)表中的行要比主表中的行少,而且物理順序就是所要求的順序,減少了磁盤i/o,所以查詢工作量可以得到大幅減少。但要注意,臨時(shí)表創(chuàng)建后不會(huì)反映主表的修改。在主表中數(shù)據(jù)頻繁修改的情況下,注意不要丟失數(shù)據(jù)。3.3.2 數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)庫(kù)的E-R圖反映了實(shí)體、實(shí)體的屬性和實(shí)體之間的聯(lián)系。下面的圖3-5至圖3-11顯示的是各個(gè)實(shí)體以及實(shí)體的屬性。圖3-5 管理員實(shí)體及屬性圖3-6 用戶實(shí)體及屬性圖3-7 學(xué)習(xí)資料實(shí)體及屬性圖3-8 論壇欄目實(shí)體及屬性圖3-9 帖子實(shí)體及屬性圖3-10 回帖實(shí)體及屬性圖3-11 資源實(shí)體及屬性下面的圖3-12顯示的是系統(tǒng)E-R圖: 圖3-12 系統(tǒng)E-R圖3.3.3 數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)本系統(tǒng)數(shù)據(jù)庫(kù)為:phpjiaoxue,其中包含了七個(gè)MySQL數(shù)據(jù)表來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)的存儲(chǔ)、調(diào)用。以下為具體數(shù)據(jù)表模式: 【管理員表】(管理員ID、管理員名、管理員密碼) 【用戶表】(用戶ID、用戶名、用戶密碼、提示問(wèn)題、提示答案、郵箱、真實(shí)姓名、注冊(cè)時(shí)間、登錄次數(shù)、最后一次登錄時(shí)間) 【資源表】(資源ID、資源名、原資源名、資源類型、上傳時(shí)間、新資源名) 【論壇欄目表】(論壇欄目ID、論壇欄目名稱) 【學(xué)習(xí)資料表】(學(xué)習(xí)資料ID、學(xué)習(xí)資料標(biāo)題、學(xué)習(xí)資料內(nèi)容、學(xué)習(xí)資料類型) 【帖子表】(帖子ID、發(fā)帖人姓名、時(shí)間、主題、帖子內(nèi)容、對(duì)應(yīng)論壇欄目) 【回帖表】(回帖ID、帖子編號(hào)、回復(fù)內(nèi)容、回帖人、回帖時(shí)間、對(duì)應(yīng)論壇欄目)其中,用下劃線標(biāo)出的屬性為表的主鍵屬性。各表的具體設(shè)計(jì)如表4-1表4-7所示。根據(jù)E-R圖,設(shè)計(jì)每張表的變量名,變量的類型及主鍵。1tbl_admin 表tbl_admin表存放管理員登錄名和密碼。表4-1 tbl_admin表變量類型備注(C)idint(10)管理員IDUserNamevarchar(50)管理員名UserPwdvarchar(50)管理員密碼2tbl_user表用戶所有的注冊(cè)信息都存放在些表中。表4-2 tbl_user 表名稱類型備注(C)Idint(10)用戶IDUserNamevarchar(32)用戶名UserPwdvarchar(32)用戶密碼Problemvarchar(50)提示問(wèn)題Answervarchar(50)提示答案Emailvarchar(100)郵箱TrueNamevarchar(32)真實(shí)姓名RegDatedatetime注冊(cè)時(shí)間LogTimesSmallint(10)登陸次數(shù)LastLogTimedatetime最后一次登陸時(shí)間3 tbl_down 表tbl_down表存放資源的信息,包括資源的編號(hào)、名稱、類型、資源日期。表4-3 tbl_down表名稱類型備注(C)down_idint(10)資源IDfilenamevarchar(50)資源名downvarchar(200)原資源名typevarchar(20)資源類型datedate上傳時(shí)間newfilenamevarchar(255)新資源名4tbl_class表tbl_class表存放論壇欄目的編號(hào)和名稱。表4-4 tbl_class表名稱類型備注(C)Idint(10)論壇欄目IDClassTypevarchar(32)論壇欄目名稱5tbl_pagecontent表tbl_pagecontent表存放學(xué)習(xí)資料的編號(hào),標(biāo)題,內(nèi)容和類型。表4-5 tbl_pagecontent表名稱類型備注(C)Idint(10)學(xué)習(xí)資料IDPageTitlevarchar(100)學(xué)習(xí)資料標(biāo)題PageContentlongtext學(xué)習(xí)資料內(nèi)容PageTypetinyint(1)學(xué)習(xí)資料類型 6tbl_msg表tbl_msg表存放帖子編號(hào),發(fā)帖人姓名,主題,發(fā)帖時(shí)間,帖子內(nèi)容和對(duì)應(yīng)論壇欄目。表4-6 tbl_pagecontent表名稱類型備注(C)Idint(10)帖子IDUserNamevarchar(32)發(fā)帖人姓名Subjectvarchar(60)主題LyDatedatetime發(fā)帖時(shí)間LyContentlongtext帖子內(nèi)容Itidint(4)對(duì)應(yīng)論壇欄目7tbl_reply表tbl_reply表存放回帖編號(hào),帖子編號(hào),回復(fù)內(nèi)容,回帖人,回帖時(shí)間和對(duì)應(yīng)論壇欄目。表4-7 tbl_reply表名稱類型備注(C)hidint(4)回帖IDhbidint(4)帖子編號(hào)hcontnettext回復(fù)內(nèi)容huiuservarchar(32)回帖人htimelongtext回帖時(shí)間htidint(4)對(duì)應(yīng)論壇欄目3.4 本章小結(jié)本章介紹了PHP學(xué)習(xí)網(wǎng)的總體構(gòu)想,以及實(shí)現(xiàn)的主要功能。根據(jù)需求分析對(duì)模塊功能作了較為詳細(xì)的介紹。最后介紹了數(shù)據(jù)庫(kù)的設(shè)計(jì)原則,分析了數(shù)據(jù)庫(kù)的概念與邏輯結(jié)構(gòu)設(shè)計(jì)。第四章 系統(tǒng)功能的具體實(shí)現(xiàn)4.1 系統(tǒng)前臺(tái)設(shè)計(jì)在系統(tǒng)進(jìn)行整體設(shè)計(jì)的過(guò)程中,將系統(tǒng)中的公用代碼部分分離了出來(lái),避免了系統(tǒng)中出現(xiàn)代碼冗余,同時(shí)也提高了系統(tǒng)的開(kāi)發(fā)效率。 /調(diào)用頁(yè)面左部文件 /調(diào)用導(dǎo)航條文件 4.1.1 系統(tǒng)前臺(tái)首頁(yè) 圖4-1 PHP學(xué)習(xí)網(wǎng)主頁(yè)面4.1.2 會(huì)員登錄設(shè)計(jì)已注冊(cè)會(huì)員可以用用戶名和密碼登錄系統(tǒng)。SESSION和COOKIE的區(qū)別:Session:在計(jì)算機(jī)中,尤其是在網(wǎng)絡(luò)應(yīng)用中,稱為“會(huì)話”。Session是存在服務(wù)器端的,而Cookie是存在客戶端的。Session是存在內(nèi)存中的,瀏覽器關(guān)閉它也就“死”了;Cookie是以文件方式存在的,可以修改其“存活”時(shí)間。Cookie是Web服務(wù)器保存在用戶硬盤上的一段文本。Cookie允許一個(gè)Web站點(diǎn)在用戶的電腦上保存信息并且隨后再取回它??梢栽O(shè)置其存在時(shí)間。在本系統(tǒng)中,判斷用戶是否登錄則使用SESSION判斷,如果登錄成功,則在服務(wù)端創(chuàng)建SESSION,并將其用戶名保存在其中。圖4-2 登錄驗(yàn)證頁(yè)面在系統(tǒng)用戶登錄的時(shí)候,用戶需要輸入用戶名和密碼及驗(yàn)證碼進(jìn)行數(shù)據(jù)庫(kù)登錄驗(yàn)證。用戶必須輸入用戶名和密碼以及驗(yàn)證碼。否則將彈出對(duì)話框進(jìn)行提示。該功能采用Javascript腳本進(jìn)行判斷,以減輕數(shù)據(jù)庫(kù)的壓力。判斷輸入是否為空是通過(guò)按扭onsubmit=return regFrm()觸發(fā)事件 function regFrm() var aname1= document.getElementById(username);var apwd= document.getElementById(password);var checkcodestr = document.getElementById(checkcodestr);if(aname1.value= ) aname1.style.backgroundColor= #FFFFCC;alert(請(qǐng)輸入用戶名!); /彈出提示對(duì)話框aname1.focus(); /返回輸入光標(biāo)return false; else if(apwd.value= ) apwd.style.backgroundColor= #FFFFCC;alert(請(qǐng)輸入用戶密碼!);apwd.focus();return false;else if(checkcodestr.value= ) checkcodestr.style.backgroundColor= #FFFFCC;alert(請(qǐng)輸入驗(yàn)證碼!);checkcodestr.focus();return false;return true;4.1.3 會(huì)員注冊(cè)設(shè)計(jì)在普通瀏覽者注冊(cè)會(huì)員時(shí),需要填寫(xiě)用戶名,密碼,確認(rèn)密碼,密碼提示問(wèn)題,密碼提示答案,E-mail,用戶真實(shí)姓名這些信息。只有規(guī)范填寫(xiě)注冊(cè)信息才能注冊(cè)會(huì)員,否則將彈出對(duì)話框進(jìn)行提示。該功能采用Javascript腳本進(jìn)行判斷,以減輕數(shù)據(jù)庫(kù)的壓力。圖4-3 注冊(cè)驗(yàn)證頁(yè)面判斷輸入是否規(guī)范是通過(guò)按扭onsubmit=return regFrm()觸發(fā)事件function regForm() var uName= document.getElementById(uName);

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論