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

正文內(nèi)容

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

2024-12-29 00:24 本頁面
 

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