freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于php實(shí)現(xiàn)的網(wǎng)上留言管理系統(tǒng)的設(shè)計(jì)—免費(fèi)畢業(yè)設(shè)計(jì)論文(編輯修改稿)

2024-12-29 00:24 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 選擇管理員回復(fù)是否另外發(fā)送 給自己 發(fā)布功能 顯示留言者 IP 顯示滾動(dòng)的系統(tǒng)公告 顯示留言以及回復(fù)信息 屏蔽只有管理員可見(jiàn)的留言信息 顯示頁(yè)面處理時(shí)間以及 PHP 運(yùn)行時(shí)間 支持標(biāo)題搜索,數(shù)據(jù)庫(kù)對(duì)標(biāo)題建有索引 管理功能 支持在線公告修改 支持批量刪除數(shù)據(jù) 支持回復(fù),編輯,刪除留言信息 管理員信息經(jīng)過(guò) MD5 加密,只能在線修改用戶名和密碼 特色功能 聊天室,實(shí)時(shí)的信息交流平臺(tái) 建立 SOCKET 會(huì)話,根據(jù) SMTP 協(xié)議發(fā)送郵件 可在無(wú) GD 庫(kù)的空間中正常運(yùn)行的驗(yàn)證碼功能 運(yùn)用大量 PHP 和 JavaScript 函數(shù)繪制網(wǎng)頁(yè)特效 數(shù)據(jù)表的設(shè)計(jì) 在著手開(kāi)發(fā)一個(gè) Web 項(xiàng)目時(shí),數(shù)據(jù)庫(kù)的設(shè)計(jì)通常是第一位要做的,基本上所有的操作都會(huì)涉及到數(shù)據(jù)表的操作。那么數(shù)據(jù)表的設(shè)計(jì)就關(guān)系到整個(gè)項(xiàng)目的設(shè)計(jì)和功能的實(shí)現(xiàn)。網(wǎng)上留言信息需要一個(gè)表來(lái)存儲(chǔ),另外聊天室也需要一個(gè)表來(lái)存儲(chǔ)信息,因此整個(gè)系統(tǒng)需要兩個(gè)表,具體設(shè)計(jì)如表 表 3所示: 第 9 頁(yè) 共 20 頁(yè) 表 2 留言信息存儲(chǔ)表 字段名 類(lèi)型 說(shuō)明 id Int(6) primry key 留言 id tname Varchar(6) 留言者姓名 tx Int(3) 頭像 dtime Datetime 留言時(shí)間 title Varchar(33) 留言標(biāo)題 qq Int(13) 留言者 qq Varchar(25) 留言者 nei Text 留言?xún)?nèi)容 htime Datetime 回復(fù)時(shí)間 estate Int(1) 留言狀態(tài) hnei Text 回復(fù)內(nèi)容 ip Varchar(15) 留言者 ip send_mail Bool 是否接收回復(fù)郵件 表 3 聊天室信息存儲(chǔ)表 字段名 類(lèi)型 說(shuō)明 chtime Datetime 信息發(fā)布時(shí)間 nick Varchar(10) 用戶名稱(chēng) words Varchar(100) 聊天內(nèi)容 添加功能與管理功能的設(shè)計(jì)與實(shí)現(xiàn) 設(shè)計(jì)方案的介紹 在前面的文章中 已經(jīng)介紹了 MVC 編程架構(gòu)的特點(diǎn),本系統(tǒng)的添加功能與管理功能就是采用 MVC 編程架構(gòu)開(kāi)發(fā)的。具體的系統(tǒng)結(jié)構(gòu)如圖 2 所示: 圖 2 添加與管理功能的 MVC架構(gòu) 第 10 頁(yè) 共 20 頁(yè) 對(duì)添加與管理功能的 設(shè)計(jì)選用的是類(lèi)似 Smart Ticket 中使用的 MVC 模式。這種模式的特點(diǎn)是將 Controller 設(shè)計(jì)成一個(gè)巨大的事物處理器 (即: Switch?? Case 語(yǔ)句),所有由 UI收集到的用戶需求都轉(zhuǎn)發(fā)給 Controller進(jìn)行處理。其具體的工作流程是這樣的: View 通過(guò)“ URL?變量名 =變量值 ”的方式向 Controller 傳遞一個(gè)功能常量, Controller 通過(guò) PHP 系統(tǒng)變量“ $_Get”接收到這個(gè)常量,然后將其放入 Switch?? Case 語(yǔ)句中, Switch?? Case 語(yǔ)句根據(jù)比較不同的 常量, 來(lái) 處理不同的請(qǐng)求 ,從而完成不同的功能 。 Controller主要是通過(guò)調(diào)用 Model 內(nèi)的自定義函數(shù)、 MYSQL 數(shù)據(jù)庫(kù)操作類(lèi)以及郵件發(fā)送類(lèi)來(lái)處理不同的請(qǐng)求。 下面總結(jié)一下這個(gè)設(shè)計(jì)方案的優(yōu)點(diǎn)和缺點(diǎn)。從上文介紹的工作流程可以看到這種模式的優(yōu)點(diǎn)是用戶控制器提供一個(gè)控制和處理請(qǐng)求的集中入口點(diǎn),它負(fù)責(zé)接收,截獲并處理用戶請(qǐng)求;并根據(jù)當(dāng)前狀態(tài)和業(yè)務(wù)操作的結(jié)果決定向客戶呈現(xiàn)的視圖。這樣做能夠控制和協(xié)調(diào)每個(gè)用戶跨越多個(gè)請(qǐng)求的處理,從而達(dá)到了集中管理的目的。這種模式還具有多視圖對(duì)應(yīng)一個(gè)模型的能力,對(duì)多種不同方式的訪問(wèn)請(qǐng)求可 以用一個(gè)模型來(lái)實(shí)現(xiàn),減少了代碼的重復(fù)和維護(hù)量,一旦模型改變也易于維護(hù)。其次由于模型返回的數(shù)據(jù)不帶任何顯示格式,因而這些模型也可直接應(yīng)用于接口的使用。當(dāng)然,這種模式也有一個(gè)缺陷,那就是隨著功能的不斷增加Controller 將變得過(guò)于龐大,這樣將影響系統(tǒng)的運(yùn)行速度,增加用戶等待響應(yīng)的時(shí)間。但就本系統(tǒng)的功能而言,用 Controller 來(lái)完成還是綽綽有余的。 各部分實(shí)現(xiàn)過(guò)程的介紹 首先介紹 View 部分的實(shí)現(xiàn)過(guò)程。就添加功能而言設(shè)計(jì)了一個(gè)界面優(yōu)美的視圖如圖 3 所示,用戶主要是通過(guò)填寫(xiě) Html 表單完成個(gè)人信息以及留言信息 的錄入,這些數(shù)據(jù)通過(guò) POST 方式傳遞給 Controller。另外還用 JavaScript 的“ ()”函數(shù)在客戶端即時(shí)獲取用戶輸入的數(shù)據(jù),然后再用 if 判斷語(yǔ)句檢查用戶輸入的數(shù)據(jù)是否標(biāo)準(zhǔn),如果不標(biāo)準(zhǔn)系統(tǒng)就會(huì)通過(guò)“ (obj_name).innerHTML”變量顯示提示語(yǔ)句,明確地告訴用戶如何輸入正確的數(shù)據(jù)。 第 11 頁(yè) 共 20 頁(yè) 圖 3 留言信息添加界面 就管理功能而言,將視圖分為兩級(jí),一級(jí)是身份驗(yàn)證界面,當(dāng)用戶正確輸入用戶名、密碼以及驗(yàn)證碼 之后才能進(jìn)入下一級(jí)的管理界面。在管理界面中,每一個(gè)功能都對(duì)應(yīng)了一個(gè)視圖,這樣方便了管理員區(qū)分和使用不同的功能。 接著介紹 Controller 部分的實(shí)現(xiàn)過(guò)程。前文已經(jīng)介紹了 Controller 是通過(guò)判斷視圖傳遞的功能常量來(lái)選擇相應(yīng)的功能,下面的表 4就給出了不同常量與不同功能的對(duì)應(yīng)關(guān)系: 第 12 頁(yè) 共 20 頁(yè) 表 4 常量與功能對(duì)應(yīng)表 常量 功能 add 添加數(shù)據(jù) edit 編輯留言信息 huifu 回復(fù)留言信息 del 刪除留言信息 pldel 批量刪除留言信息 admin 確認(rèn)管理員身份 editadmin 在線修 改管理員信息 editgonggao 在線修改公告內(nèi)容 out 管理員退出 就添加功能而言, Controller 會(huì)接收到 View 傳遞的“ add”功能常量,于是 Controller 會(huì)先通過(guò) PHP 的系統(tǒng)變量“ $_POST”來(lái)接收用戶輸入的數(shù)據(jù),然后再應(yīng)用 Model 內(nèi)的自定義函數(shù)對(duì)用戶輸入的數(shù)據(jù)進(jìn)行鑒定和過(guò)濾,最后Controller 就調(diào)用 Model 內(nèi)的數(shù)據(jù)庫(kù)操作類(lèi),通過(guò)使用對(duì)象的成員函數(shù)將數(shù)據(jù)保存到數(shù)據(jù)庫(kù)里。在錄入數(shù)據(jù)的同時(shí),用戶還可以選擇是否通過(guò)郵件接收管理員回復(fù),以及所發(fā)的留言是正常顯示,還是僅管理員 可見(jiàn)。 就管理功能而言,首先要明確的是身份認(rèn)證的歸屬,它似乎是應(yīng)用邏輯的一部分,因此是屬于 Model。但是如果要限制只有通過(guò)驗(yàn)證的用戶才能執(zhí)行特定動(dòng)作,那么這一要求只能由 Controller 來(lái)完成,因?yàn)檫@些特定的動(dòng)作必須在Controller 內(nèi)定義,而且只有 Controller 可以進(jìn)入 Model,所以身份認(rèn)證歸入Controller 才是最合理的劃分。對(duì)身份驗(yàn)證的安全性在 Controller 內(nèi)采用了雙保險(xiǎn):第一是使用 PHP 的系統(tǒng)函數(shù)“ MD5()”對(duì)管理員密碼進(jìn)行加密,使得用戶只能在網(wǎng)上修改管理員的用戶名和密碼 ;第二是使用特色功能里的驗(yàn)證碼功能來(lái)防止某些用戶采用 暴力破解方式進(jìn)行不斷的登陸嘗試 。 當(dāng)管理員成功登入系統(tǒng)后又面臨了一個(gè)問(wèn)題,那就是網(wǎng)頁(yè)是一種無(wú)狀態(tài)的連接程序,因此你無(wú)法得知用戶的瀏覽狀態(tài)。要解決這個(gè)問(wèn)題就會(huì)用到 PHP 的Session 功能,我們通過(guò) Session 記錄用戶的有關(guān)信息,以供用戶再次以此身份對(duì) Web 服務(wù)器提供要求時(shí)作確認(rèn)。具體的實(shí)現(xiàn)是這樣的:當(dāng)用戶進(jìn)入網(wǎng)站我們就調(diào)用“ SESSION_START()”函數(shù)打開(kāi)一個(gè)會(huì)話期,當(dāng)管理員成功登入系統(tǒng)后,我們用“ $_SESSION[admin]”這個(gè)全局變量保 存下管理員密碼,那么服務(wù)器就記錄下了管理員的信息,以后在使用其他功能時(shí)就不需要用戶輸入用戶名和密碼了。當(dāng)管理員退出系統(tǒng)時(shí),我們可以使用“ UNSET($_SESSION[admin])”來(lái)銷(xiāo)毀保存在服務(wù)器端的管理員信息。當(dāng)然 SESSION 也存在一些不足之處,如它會(huì) 占用少許 第 13 頁(yè) 共 20 頁(yè) 服務(wù)器資源以及關(guān)閉瀏覽器即會(huì)失效。但換一種角度去思考,“關(guān)閉瀏覽器即會(huì)失效”其實(shí)是從安全的角度設(shè)計(jì)的。在整個(gè)管理員的 會(huì)話期里, Controller 是通過(guò) PHP 的系統(tǒng)變量“ $_Get”來(lái)接收管理員選擇的功能常量,然后再讓 Switch?? Case 語(yǔ)句 根據(jù)比較不同的常量, 來(lái) 處理不同的請(qǐng)求 ,從而完成管理員要求的功能 。 最后介紹 Model 部分的實(shí)現(xiàn)過(guò)程。 Web 開(kāi)發(fā)歸根結(jié)底就是與數(shù)據(jù)庫(kù)打交道,對(duì)數(shù)據(jù)操作的封裝是最基本的,在設(shè)計(jì)時(shí)應(yīng)當(dāng)充分考慮到未來(lái)的需要和可擴(kuò)展性,如果在開(kāi)發(fā)業(yè)務(wù)邏輯模型期間再對(duì)數(shù)據(jù)操作的封裝進(jìn)行修改,往往可能會(huì)傷筋動(dòng)骨,牽連的內(nèi)容會(huì)較多。本系統(tǒng)涉及的數(shù)據(jù)表比較單一,即每次操作主要針對(duì)一個(gè)數(shù)據(jù)表。因此,在 Model 內(nèi)使用 PHP 語(yǔ)言設(shè)計(jì)了一個(gè)通用的類(lèi),只更換數(shù)據(jù)表即可完成對(duì)數(shù)據(jù)庫(kù)的操作。在這個(gè)類(lèi)中,成員函數(shù)主要實(shí)現(xiàn)的功能包括: ( 1)初始化 成員變量; ( 2)連接數(shù)據(jù)庫(kù); ( 3)執(zhí)行 SQL 語(yǔ)句; ( 4)返回當(dāng)前查尋數(shù)據(jù)的數(shù)據(jù)行數(shù); ( 5)返回?cái)?shù)據(jù)總行數(shù); ( 6)讀取數(shù)據(jù); ( 7)關(guān)閉連接。 通過(guò)這個(gè)類(lèi)就將系統(tǒng)對(duì)數(shù)據(jù)庫(kù)的操作封裝起來(lái),方便 Controller 的操作,同時(shí)也使系統(tǒng)更安全了。 另外還設(shè)計(jì)了一個(gè)郵件發(fā)送類(lèi)。開(kāi)發(fā)這個(gè)類(lèi)的目的在于滿足一些用戶希望通過(guò) Email 接收管理員回復(fù)的要求。這個(gè)類(lèi)支持兩種發(fā)送 Email 的方法:第一種,使用 PHP 自帶的“ MAIL()”函數(shù)來(lái)發(fā)送;第二種,使用 SMTP 協(xié)議的 SOCKET 發(fā)送。由于 PHP 沒(méi)有提供現(xiàn)成的 SMTP 函數(shù),只提供了一個(gè)功能不甚靈活的“ MAIL()”函數(shù),這個(gè)函數(shù)需要服務(wù)器配置上的支持,并且不支持 SMTP 驗(yàn)證,在很多場(chǎng)合無(wú)法正常的工作,因此才開(kāi)發(fā)了第二種發(fā)送 Email 的方法來(lái)彌補(bǔ)第一種方式的不足。第二種發(fā)送方式實(shí)際上是利用 PHP 的 SOCKET 函數(shù)來(lái)和 SMTP 服務(wù)器建立一個(gè)連接,然后發(fā)送文本的命令給服務(wù)器 , 一封內(nèi)容簡(jiǎn)單的郵件就發(fā)送出去了 。第二種方式的好處在于 PHP 中 已經(jīng)存在很多現(xiàn)成的封裝得很好的類(lèi)或者函數(shù)替我們完成底層的 SOCKET 級(jí)操作,只需要直接拿來(lái)用就好,而 不用 在本文里去討論底層的代碼 。下面就給出通 過(guò) SOCKET 發(fā)送 Email 的具體實(shí)現(xiàn)過(guò)程: ( 1)創(chuàng)建 SOCK,并打開(kāi)連接; ( 2)設(shè)置為阻塞模式; ( 3)測(cè)試 SMTP 應(yīng)答碼是否為 220, 220代表郵件服務(wù)就緒; 第 14 頁(yè) 共 20 頁(yè) ( 4)發(fā)送用戶身份驗(yàn)證,然后讀取服務(wù)器端發(fā)送給客戶端的返回?cái)?shù)據(jù); ( 5)發(fā)送 AUTH LOGIN 命令; ( 6)發(fā)送用戶名以及密碼; ( 7)身份驗(yàn)證成功過(guò)后,向服務(wù)器添加 From 以及 To; ( 8)發(fā)送 DATA 命令,開(kāi)始輸入 Email 數(shù)據(jù),以“ .”號(hào)結(jié)束; ( 9)書(shū)寫(xiě)郵件內(nèi)容,將郵件內(nèi)容發(fā)送到 SMTP 服務(wù)器; ( 10)發(fā)送 QUIT 命令,結(jié)束會(huì)話。 在 Model 中還包含了一個(gè)自定義函數(shù)文件,這些函數(shù)主要是被 Controller調(diào)用,起到對(duì)用戶輸入數(shù)據(jù)進(jìn)行鑒定和過(guò)濾的作用。這些函數(shù)的具體功能包括: ( 1)接收功能常量; ( 2)接收用戶在前臺(tái)輸入的數(shù)據(jù); ( 3)限制用戶信息輸入的范圍; ( 4)過(guò)濾用戶輸入的錯(cuò)誤數(shù)據(jù); ( 5)顯示頁(yè)面跳轉(zhuǎn)窗口。 發(fā)布功能的設(shè)計(jì)與實(shí)現(xiàn) 發(fā)布功能主要是將留言信息顯示給用戶查看,其中發(fā)布的界面主要對(duì)應(yīng)了三種使用功能:留言發(fā)布界面、管理員界面、用戶信息的搜索界面。由于發(fā)布功能不是很復(fù)雜,因此所采用的 MVC 的架構(gòu)也有所不同。具體的 系統(tǒng)結(jié)構(gòu)如下圖 4所示: 圖 4 發(fā)布功能的 MVC架構(gòu) 首先介紹 View 部分。在這里我用 Html 語(yǔ)言編寫(xiě)了一個(gè)留言框模板,這個(gè)模 第 15 頁(yè) 共 20 頁(yè) 板主要用于定義留言信息的顯示格式。它由 Form 表單組成,其中用 “ [%標(biāo)簽名稱(chēng) %]”標(biāo)記出要?jiǎng)討B(tài)顯示的內(nèi)容所在的位置,同時(shí)給 Form 表單的 ID賦一個(gè)值,以便 Controller 調(diào)用。另外還使用 JavaScript 制作了一些實(shí)用的前臺(tái)動(dòng)態(tài)效果,它們包括: ( 1)建立一些主要鏈接上的中文提示框; ( 2)支持在新的窗口打開(kāi)用戶插入的圖片; ( 3)輸出滾動(dòng)顯示的公告 ; ( 4)屏蔽腳本錯(cuò)誤; ( 5)顯示頁(yè)面處理時(shí)間以及 PHP 運(yùn)行時(shí)間等。 下面就給出留言發(fā)布界面的效果圖(圖 5): 圖 5 留言發(fā)布界面 接著介紹 Controller 部分。在這里 ID 是 JavaScript 標(biāo)簽容器命名屬性 ,innerHTML 表示一個(gè)容器內(nèi)所包含的所有代碼 ,通過(guò)“ ”就能夠在JavaScript 中取得 View 部分所定義的留言框模板的代碼。然后再通過(guò)JavaScript 的 replace 方法與正則表達(dá)式結(jié)合應(yīng)用 ,從而替換模板中的標(biāo)簽內(nèi)容,將留言信息插入到留言框模板中去。這種 設(shè)計(jì)方法的好處在于客戶端不用刷新頁(yè)面就能看到動(dòng)態(tài)更新的內(nèi)容,并且利用 JavaScript 語(yǔ)言將處理靜態(tài)頁(yè)面的代碼與處理動(dòng)態(tài)頁(yè)面的代碼分離開(kāi),方便了程序員查找和修改程序。 第
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1