PHP案例留言板設(shè)計(20210314194821)_第1頁
PHP案例留言板設(shè)計(20210314194821)_第2頁
PHP案例留言板設(shè)計(20210314194821)_第3頁
PHP案例留言板設(shè)計(20210314194821)_第4頁
PHP案例留言板設(shè)計(20210314194821)_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、案例留言板設(shè)計概述現(xiàn)在很多網(wǎng)站都考慮到了與用戶之間的互動交流,于是出現(xiàn)了各種各樣的 留言板。在留言板中,用戶可以看到前面使用者的留言,也可以留下自己的言論。 對商務(wù)網(wǎng)站,用留言板可以了解用戶的需求和意見?,F(xiàn)在,網(wǎng)上也有很多免費的留言板程序,但親自動手做一個,能體會其中的奧秘,應(yīng)該是一個不錯的主意。系統(tǒng)架構(gòu)留言板的功能可大可小,小則簡單地讓用戶瀏覽留言和寫一個短篇留言,具有回復(fù)的功能;大則可以做到能按不同討論分門別類的WebBBS系統(tǒng),再大就是Web社區(qū)系統(tǒng)了。本案例留言板功能具有:1 瀏覽留言。以一個主頁形式,顯示留言具有分頁瀏覽功能。2回復(fù)留言。通過主頁的“回復(fù)留言”超級鏈接,進(jìn)入寫留言頁面

2、。3 隱藏留言。具有管理員身份的用戶具有屏蔽不適宜公布留言的功能,也是在 通過主頁的“隱藏留言”超級鏈接,進(jìn)入留言管理頁面。工作流程圖如圖1所示:圖1說明:1 用戶向服務(wù)器發(fā)出訪問請求;2 服務(wù)器根據(jù)用戶的角色顯示主頁面的功能1) 一般用戶,在留言板的主頁面中有瀏覽和回復(fù)功能;2) 管理員,在留言板的主頁面中有瀏覽、回復(fù)和屏蔽功能;3 留言信息記錄在數(shù)據(jù)庫中;4 服務(wù)器從數(shù)據(jù)庫中讀取留言信息顯示在頁面上,也把用戶的留言存儲在數(shù)據(jù) 庫中。三、系統(tǒng)設(shè)計1 邏輯結(jié)構(gòu)設(shè)計根據(jù)對系統(tǒng)架構(gòu)的描述,可得系統(tǒng)的邏輯結(jié)構(gòu),如圖2所示圖22 數(shù)據(jù)庫設(shè)計在MySQL數(shù)據(jù)庫服務(wù)器上建立名為guest數(shù)據(jù)庫,其中包含數(shù)

3、據(jù)表guestbook,各字段的定義和說明如表1:表1 guest數(shù)據(jù)庫中的數(shù)據(jù)表guestbook結(jié)構(gòu)字段類型NULL說明備注serialint(5)否留言序列表auto in creme ntn amechar(20)否使用者姓名timetimestamp(14)是留言時間msgtext否留言內(nèi)容emailchar(30)是使用者郵箱地址flagchar(1)是顯示標(biāo)志Y/N缺省為Y注:通過phpMyadmin建立,在MySQL的data文件夾中會自動創(chuàng)建以此數(shù)據(jù)庫為名的 文件夾,包含相關(guān)數(shù)據(jù)。本案例用到的SQL命令如表2表2本案例用到的SQL命令命令格式含義SELECT * FROM g

4、uestbook WHERE flag=YORDER BY time DESC按子段的逆序取回數(shù)據(jù)表guestbook里的標(biāo)記flag=的記錄信息INSERT INTOguestbook( name,time,msg,email)values($ name, now(),$msg,$email)向數(shù)據(jù)表guestbook的表尾追加記錄UPDATE guestbookSET flag=N WHEREserial=$serial向新數(shù)據(jù)表guestbook的子段flag信息3.界面設(shè)計主頁界面標(biāo)題行說明行導(dǎo)航條留言信息區(qū)留言內(nèi)容留言信息區(qū)留言內(nèi)容寫留言頁界面 標(biāo)題行昵稱文本框Email 文本框控制

5、按鈕:寫好了、重寫、放棄屏蔽留言頁信息操作成功提示行,返回主頁。四、編碼實現(xiàn)1. 主頁代碼文件:in dex.php?/輸出HTML頭echo 留言板 留言板 J/判斷來者是否為管理員-markl$webmastelP=array(127.0.0.1);$isMaster=false;for($i=0;$icou nt($webmastelP);$i+)if ($REMOTE_ADDR=$webmastelP$i)$isMaster=true;break;/連接數(shù)據(jù)庫服務(wù)器-mark2$connection=mysql_connect(localhost,root,) or die(無法連接數(shù)

6、據(jù)庫!);mysql_query(set names gb2312);mysql_select_db(guest) or die(無法選擇數(shù)據(jù)庫!);/向服務(wù)器發(fā)送查詢請求$query=SELECT * FROM guestbook WHERE flag=Y ORDER BY time DESC; $result=mysql_query($query,$connection) or die(瀏覽失敗);/取回留言$cou nt=O;while($row=mysql_fetch_array($result)$gb$cou ntserial=$rowserial;$gb$co un t n ame

7、=$row n ame;$gb$cou nttime=$rowtime;$gb$co un tmsg=$rowmsg;$gb$cou ntemail=$rowemail;$gb$cou ntflag=$rowfalg;$co un t+;mysql_close($connection) or die(無法斷開與數(shù)據(jù)庫的連接”);/制作導(dǎo)航條-mark3$indexstr= 我要留言 |;/當(dāng)用戶進(jìn)來時把$page設(shè)為0if (SQUERY_STRING=”)$page=0;/計算頁數(shù)$co un t=co un t($gb);$msgPerPage=10;$start=$page*$msgPe

8、rPage;$en d=$start+$msgPerPage;if($e nd$cou nt)$en d=$co unt;$totalpage=ceil($co un t/$msgPerPage);echo 目前留言板共有.$count.條留言,本頁列出了第.($start+1).至.$end.條n;/制作頁導(dǎo)航if($page0)$indexstr=$indexstr. 上一頁 | ;for($i=0;$i$totalpage;$i+)if($i!=$page)$indexstr=$indexstr. 第.($i+1).頁 ;else$indexstr=$indexstr. 第.($i+1)

9、.頁 ; if($i!=($totalpage-1)$i ndexstr=$i ndexstr. | ;if($page$totalpage-1)$indexstr=$indexstr. 下頁 ;/輸出導(dǎo)航條echo $i ndexstrn;/輸出留言-mark4for($i=$start;$i$e nd;$i+)把換行符轉(zhuǎn)換成$msg=nl2br($gb$imsg);格式化時間輸出$dbdate=$gb$itime;$year=substr($dbdate,0,4);$mo nth=substr($dbdate,5,2);$day=substr($dbdate,8,2);$hour=subs

10、tr($dbdate,11,2);$mi n=substr($dbdate,14,2);$sec=substr($dbdate,17,2);$time=$m on th.$day. .$year. .$hour.:.$mi n.:.$sec;/輸出一條留言的所有信息echo n;echo ;echo n;echo ;echo 序列號:.$gb$iserial;echo 昵   稱:;if(trim($gb$iemail)!=)echo ;echo .$gb$iname.;echo ;echo 時   間:.$time;echo 回復(fù)作者 ; if($is

11、Master)echo | 屏蔽這一篇 ;echo n;echo 正文;echo $msg;echo n;echo n;echo n;echo $in dexstr;echo ;?-in dex.php-代碼解讀1)輸出HTML頭用echo語句把HTML標(biāo)記作為字符串引入。2)判斷來者是否為管理員-mark1定義了一個數(shù)組$webmastelP,記錄留言管理員的IP ;然后檢查進(jìn)來的是不是管理員,記錄在$IsMaster ;使用系統(tǒng)變量$REMOTE_ADDR來獲取用戶的IP。3)連接數(shù)據(jù)庫服務(wù)器-mark2連接數(shù)據(jù)庫服務(wù)器;設(shè)置數(shù)據(jù)庫服務(wù)器處理的字符集,以處理漢字在瀏覽器上的顯示;打開數(shù)據(jù)庫

12、guest按字段time的逆序取回數(shù)據(jù)表guestbook里的標(biāo)記flag=的記錄信息(即篩選可顯示的留言記錄),并把它們保存在二維數(shù)組$gb中;關(guān)閉數(shù)據(jù)庫連接。4)制作導(dǎo)航條-mark3程序段中實現(xiàn)了四個功能(1)導(dǎo)航條上的信息存儲在變量$indexstr中設(shè)置導(dǎo)航條上的第一條信息:我要留言(鏈接到寫留言頁面)設(shè)置導(dǎo)航條上的第二條信息:目前留言板共有條留言,本頁列出了第至條(2)設(shè)置分頁顯示的參數(shù),算法描述如下初始化當(dāng)前頁$page為0;統(tǒng)計獲取的有效記錄($gb)數(shù),存放在變量$count中;設(shè)置每頁顯示的記錄數(shù)為10;計算當(dāng)前頁開始的記錄編號,存放在變量$start中;計算當(dāng)前頁結(jié)束的記

13、錄編號,存放在變量$end中;若當(dāng)前頁碼結(jié)束的記錄編號 $end大于有效記錄數(shù)$count,則當(dāng)前頁結(jié)束的記錄編號 $end =有效記錄數(shù)$count;計算數(shù)據(jù)表中的記錄最后一頁的頁碼,存放在變量$totalpage中(3)制作頁導(dǎo)航,算法描述如下若當(dāng)前頁大于0,則信息后追加鏈接到“上一頁”并在鏈接信息后追加分割線I同時,依次顯示并鏈接到各頁(如第 2頁),但不鏈接本頁 若當(dāng)前頁未到最后一頁,在鏈接信息后追加分割線|若當(dāng)前頁小于最后一頁,則信息后追加鏈接到“下一頁”(4)顯示導(dǎo)航條上的信息$indexstr5)輸出留言 mark4分兩個區(qū)域輸出留言信息,一是留言者的信息和操作鏈接,二是留言內(nèi)容

14、。(1)留言者的信息,包括序列號、昵稱、Email和留言時間,操作主要是寫留言和管理員屏蔽留言。使用函數(shù)nI2br()把換行符轉(zhuǎn)換成使用一組日期函數(shù)對時間進(jìn)行格式化處理使用表格規(guī)劃輸出每條記錄中有關(guān)留言者的信息輸出“回復(fù)留言”和“屏蔽這一篇”的鏈接(2)留言內(nèi)容,直接把留言內(nèi)容字段的信息顯示在表格中。6)此程序中用到的變量祥解變量名取值含義$webmastelPIP地址,數(shù)組記錄管理員的IP地址$isMasterTRUE|FALSE記錄是否管理員$REMOTE ADDRIP地址,系統(tǒng)變量記錄登錄網(wǎng)頁的IP地址$connection整數(shù),標(biāo)識連接數(shù)據(jù)庫的句柄記錄鏈接數(shù)據(jù)庫是否成功$querySQ

15、L命令記錄SQL命令$result查詢數(shù)據(jù)集記錄執(zhí)行SQL命令后的返回結(jié)果$cou nt整數(shù)記錄查詢數(shù)據(jù)集中包含的記錄數(shù)$row數(shù)組記錄查詢數(shù)據(jù)集中的一條記錄$gb查詢數(shù)據(jù)集中的值,二維數(shù)組記錄查詢結(jié)果數(shù)據(jù)集的值$in dexstr字符串記錄導(dǎo)航條上的顯示信息$page整數(shù)記錄當(dāng)前所顯示的頁碼$msgPerPage整數(shù)記錄一頁所顯示的記錄數(shù)$start整數(shù)記錄當(dāng)前頁所顯示記錄的第一個$e nd整數(shù)記錄當(dāng)前頁所顯示記錄的最后一個$totalpage整數(shù)記錄總頁碼$dbdate$year | $month |$day $hour | $mi n | $sec $time系統(tǒng)時間整數(shù) 整數(shù) 字符串記

16、錄記錄中時間字段 time的值 分別記錄時間字段time中的年月日 分別記錄時間字段time中的時分秒 記錄轉(zhuǎn)化后的時間$msg字符串記錄轉(zhuǎn)化后的留言內(nèi)容7)此程序中用到函數(shù)祥解函數(shù)用法含義cou nt()參數(shù)取數(shù)組型統(tǒng)計數(shù)組中兀素的個數(shù)mysql_c onn ect()三個參數(shù)分別是服務(wù)器名,用戶 名,用戶密碼連接到指定的數(shù)據(jù)庫服務(wù)器上,訪問 用戶建立的數(shù)據(jù)庫die()參數(shù)取字符串型返回字符串的信息,錯誤警報mysql query()參數(shù)為SQL命令執(zhí)行SQL命令mysql select db()參數(shù)為數(shù)據(jù)庫名打開數(shù)據(jù)庫文件mysql fetch array()參數(shù)為字符串以數(shù)組返回查詢數(shù)據(jù)

17、集中的記錄mysql close()參數(shù)為標(biāo)識連接數(shù)據(jù)庫的句柄關(guān)閉數(shù)據(jù)庫文件ceil()參數(shù)為數(shù)值對數(shù)值進(jìn)行收尾處理nl2br()參數(shù)為字符串把字符中的回車符轉(zhuǎn)化為substr($dbdate, m,n)三個參數(shù)分別是字符串,整數(shù), 整數(shù)從字符串$dbdate中的第m個位置起連續(xù)取n個字符作為新字符串trim()字符串取出字符串前后的空格2寫留言代碼文件:writer.php 寫留言 寫留言 FORM mothod=post actio n= 昵   稱: En ail&n bsp;: 內(nèi)   容:?$text=;if($action=放棄!)mark1

18、echo ;/-mark1else if($action=寫好了 !)-mark2if ($n ame!= & $msg!=)連接數(shù)據(jù)庫服務(wù)器-$connection=mysql_connect(localhost,root,) or die(無法連接數(shù)據(jù)庫!); mysql_select_db(guest) or die(無法選擇數(shù)據(jù)庫!);向服務(wù)器發(fā)送查詢請求$query=INSERT INTO guestbook( name,time,msg,email)values($ name, no w(),$msg,$email);$result=mysql_query($query,$conn

19、ection) or die(存入數(shù)據(jù)庫失敗”); mysql_close($connection) or die(無法斷開與數(shù)據(jù)庫的連接”); echo n;echo 填寫留言成功!n;echo ;echo 五秒鐘后自動返回系統(tǒng) n;echo n;/-mark2else/-mark3echo n;echo 出錯了 n;echo 信息不全!昵稱和內(nèi)容是必須填寫的!n;echo n;/mark3?-writer.php-代碼解讀主要完成了三項工作:1) 以HTML編寫了表單,用于填寫昵稱、Emial和留言內(nèi)容。2) 對單擊表單中的“放棄! ”按鈕的處理:重定向回主頁。mark13)對單擊表單中的“寫好了! ”按鈕的處理,這又有兩種情況:(1)昵稱和Email不空的情況處理mark2連接數(shù)據(jù)庫服務(wù)器;存入數(shù)據(jù);關(guān)閉數(shù)據(jù)庫服務(wù)器連接;向瀏覽器輸出成功的信息;重定向回主頁。(2)昵稱和Email為空的情況處理:向瀏覽器輸出出錯的信息。mark34)此程序中用到的變量祥解。變量名取值含義$

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論