PHP案例留言板设计(20210313180732)_第1页
PHP案例留言板设计(20210313180732)_第2页
PHP案例留言板设计(20210313180732)_第3页
PHP案例留言板设计(20210313180732)_第4页
PHP案例留言板设计(20210313180732)_第5页
已阅读5页,还剩10页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、案例留言板设计 概述 现在很多网站都考虑到了与用户之间的互动交流,于是出现了各种各样的 留言板。在留言板中,用户可以看到前面使用者的留言,也可以留下自己的言论。 对商务网站,用留言板可以了解用户的需求和意见。现在,网上也有很多免费的 留言板程序,但亲自动手做一个,能体会其中的奥秘,应该是一个不错的主意。 系统架构 留言板的功能可大可小,小则简单地让用户浏览留言和写一个短篇留言, 具有回复的功能;大则可以做到能按不同讨论分门别类的WebBBS系统,再大 就是Web社区系统了。 本案例留言板功能具有: 1 浏览留言。以一个主页形式,显示留言具有分页浏览功能。 2回复留言。通过主页的“回复留言”超级

2、链接,进入写留言页面。 3 隐藏留言。具有管理员身份的用户具有屏蔽不适宜公布留言的功能,也是在 通过主页的“隐藏留言”超级链接,进入留言管理页面。 工作流程图如图1所示: 图1 说明: 1 用户向服务器发出访问请求; 2 服务器根据用户的角色显示主页面的功能 1) 一般用户,在留言板的主页面中有浏览和回复功能; 2) 管理员,在留言板的主页面中有浏览、回复和屏蔽功能; 3 留言信息记录在数据库中; 4 服务器从数据库中读取留言信息显示在页面上,也把用户的留言存储在数据 库中。 三、系统设计 1 逻辑结构设计 根据对系统架构的描述,可得系统的逻辑结构,如图2所示 图2 2 数据库设计 在MySQ

3、L数据库服务器上建立名为guest数据库,其中包含数据表guestbook, 各字段的定义和说明如表1: 表1 guest数据库中的数据表guestbook结构 字段 类型 NULL 说明 备注 serial int(5) 否 留言序列表 auto in creme nt n ame char(20) 否 使用者姓名 time timestamp(14) 是 留言时间 msg text 否 留言内容 email char(30) 是 使用者邮箱地址 flag char(1) 是 显示标志Y/N 缺省为Y 注:通过phpMyadmin建立,在MySQL的data文件夹中会自动创建以此数据库为名的

4、 文件夹,包含相关数据。 本案例用到的SQL命令如表2 表2本案例用到的SQL命令 命令格式 含义 SELECT * FROM guestbook WHERE flag=Y ORDER BY time DESC 按子段的逆序取回数据表guestbook里 的标记flag=的记录信息 INSERT INTOguestbook( name,time,msg,email) values($ name, now(),$msg,$email) 向数据表guestbook的表尾追加记录 UPDATE guestbookSET flag=N WHERE serial=$serial 向新数据表guestbo

5、ok的子段flag信息 3.界面设计 主页界面 标题行 说明行 导航条 留言信息区 留言内容 留言信息区 留言内容 写留言页界面 标题行 昵称文本框 Email 文本框 控制按钮:写好了、重写、放弃 屏蔽留言页 信息操作成功提示行,返回主页。 四、编码实现 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=$webm

6、astelP$i) $isMaster=true; break; /连接数据库服务器-mark2 $connection=mysql_connect(localhost,root,) or die(无法连接数据库!); mysql_query(set names gb2312); mysql_select_db(guest) or die(无法选择数据库!); /向服务器发送查询请求 $query=SELECT * FROM guestbook WHERE flag=Y ORDER BY time DESC; $result=mysql_query($query,$connection) or

7、 die(浏览失败); /取回留言 $cou nt=O; while($row=mysql_fetch_array($result) $gb$cou ntserial=$rowserial; $gb$co un t n ame=$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(无法断开与数据库的连接”); /制作导航条-mark3 $i

8、ndexstr= 我要留言 |; /当用户进来时把$page设为0 if (SQUERY_STRING=”) $page=0; /计算页数 $co un t=co un t($gb); $msgPerPage=10; $start=$page*$msgPerPage; $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; /制作页导航 if($page

9、0) $indexstr=$indexstr. 上一页 | ; for($i=0;$i$totalpage;$i+) if($i!=$page) $indexstr=$indexstr. 第.($i+1).页 ; else $indexstr=$indexstr. 第.($i+1).页 ; if($i!=($totalpage-1) $i ndexstr=$i ndexstr. | ; if($page$totalpage-1) $indexstr=$indexstr. 下页 ; /输出导航条 echo $i ndexstrn; /输出留言-mark4 for($i=$start;$i$e n

10、d;$i+) 把换行符转换成 $msg=nl2br($gb$imsg); 格式化时间输出 $dbdate=$gb$itime; $year=substr($dbdate,0,4); $mo nth=substr($dbdate,5,2); $day=substr($dbdate,8,2); $hour=substr($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

11、; echo ; echo n; echo ; echo 序列号:.$gb$iserial; echo 昵 称:; if(trim($gb$iemail)!=) echo ; echo .$gb$iname.; echo ; echo 时 间:.$time; echo 回复作者 ; if($isMaster) echo | 屏蔽这一篇 ; echo n; echo 正文; echo $msg; echo n; echo n; echo n; echo $in dexstr; echo ; ? -in dex.php- 代码解读 1)输出HTML头 用echo语句把HTML标记作为字符串引入。

12、2)判断来者是否为管理员-mark1 定义了一个数组$webmastelP,记录留言管理员的IP ; 然后检查进来的是不是管理员,记录在$IsMaster ; 使用系统变量$REMOTE_ADDR来获取用户的IP。 3)连接数据库服务器-mark2 连接数据库服务器; 设置数据库服务器处理的字符集,以处理汉字在浏览器上的显示; 打开数据库guest 按字段time的逆序取回数据表guestbook里的标记flag=的记录信息(即筛选可 显示的留言记录),并把它们保存在二维数组$gb中; 关闭数据库连接。 4)制作导航条-mark3 程序段中实现了四个功能 (1)导航条上的信息存储在变量$ind

13、exstr中 设置导航条上的第一条信息:我要留言(链接到写留言页面) 设置导航条上的第二条信息:目前留言板共有条留言,本页列出了第至条 (2)设置分页显示的参数,算法描述如下 初始化当前页$page为0; 统计获取的有效记录($gb)数,存放在变量$count中; 设置每页显示的记录数为10; 计算当前页开始的记录编号,存放在变量$start中; 计算当前页结束的记录编号,存放在变量$end中; 若当前页码结束的记录编号 $end大于有效记录数$count,则 当前页结束的记录编号 $end =有效记录数$count; 计算数据表中的记录最后一页的页码,存放在变量$totalpage中 (3)

14、制作页导航,算法描述如下 若当前页大于0, 则信息后追加链接到“上一页”并在链接信息后追加分割线I 同时,依次显示并链接到各页(如第 2页),但不链接本页 若当前页未到最后一页,在链接信息后追加分割线| 若当前页小于最后一页,则信息后追加链接到“下一页” (4)显示导航条上的信息$indexstr 5)输出留言 mark4 分两个区域输出留言信息,一是留言者的信息和操作链接,二是留言内容。 (1)留言者的信息,包括序列号、昵称、Email和留言时间,操作主要是写留言和 管理员屏蔽留言。 使用函数nI2br()把换行符转换成 使用一组日期函数对时间进行格式化处理 使用表格规划输出每条记录中有关留

15、言者的信息 输出“回复留言”和“屏蔽这一篇”的链接 (2)留言内容,直接把留言内容字段的信息显示在表格中。 6)此程序中用到的变量祥解 变量名 取值 含义 $webmastelP IP地址,数组 记录管理员的IP地址 $isMaster TRUE|FALSE 记录是否管理员 $REMOTE ADDR IP地址,系统变量 记录登录网页的IP地址 $connection 整数,标识连接数据库的句柄 记录链接数据库是否成功 $query SQL命令 记录SQL命令 $result 查询数据集 记录执行SQL命令后的返回结果 $cou nt 整数 记录查询数据集中包含的记录数 $row 数组 记录查询

16、数据集中的一条记录 $gb 查询数据集中的值,二维数组 记录查询结果数据集的值 $in dexstr 字符串 记录导航条上的显示信息 $page 整数 记录当前所显示的页码 $msgPerPage 整数 记录一页所显示的记录数 $start 整数 记录当前页所显示记录的第一个 $e nd 整数 记录当前页所显示记录的最后一个 $totalpage 整数 记录总页码 $dbdate $year | $month |$day $hour | $mi n | $sec $time 系统时间 整数 整数 字符串 记录记录中时间字段 time的值 分别记录时间字段time中的年月日 分别记录时间字段ti

17、me中的时分秒 记录转化后的时间 $msg 字符串 记录转化后的留言内容 7)此程序中用到函数祥解 函数 用法 含义 cou nt() 参数取数组型 统计数组中兀素的个数 mysql_c onn ect() 三个参数分别是服务器名,用户 名,用户密码 连接到指定的数据库服务器上,访问 用户建立的数据库 die() 参数取字符串型 返回字符串的信息,错误警报 mysql query() 参数为SQL命令 执行SQL命令 mysql select db() 参数为数据库名 打开数据库文件 mysql fetch array() 参数为字符串 以数组返回查询数据集中的记录 mysql close()

18、 参数为标识连接数据库的句柄 关闭数据库文件 ceil() 参数为数值 对数值进行收尾处理 nl2br() 参数为字符串 把字符中的回车符转化为 substr($dbdate, m,n) 三个参数分别是字符串,整数, 整数 从字符串$dbdate中的第m个位置起 连续取n个字符作为新字符串 trim() 字符串 取出字符串前后的空格 2写留言 代码文件:writer.php 写留言 写留言 FORM mothod=post actio n= 昵 称: En ail: 内 容: ? $text=; if($action=放弃!)mark1 echo ; /-mark1 else if($acti

19、on=写好了 !)-mark2 if ($n ame!= mysql_select_db(guest) or die(无法选择数据库!); 向服务器发送查询请求 $query=INSERT INTO guestbook( name,time,msg,email) values($ name, no w(),$msg,$email); $result=mysql_query($query,$connection) or die(存入数据库失败”); mysql_close($connection) or die(无法断开与数据库的连接”); echo n; echo 填写留言成功!n; echo

20、 ; echo 五秒钟后自动返回系统 n; echo n; /-mark2 else/-mark3 echo n; echo 出错了 n; echo 信息不全!昵称和内容是必须填写的!n; echo n; /mark3 ? -writer.php- 代码解读 主要完成了三项工作: 1) 以HTML编写了表单,用于填写昵称、Emial和留言内容。 2) 对单击表单中的“放弃! ”按钮的处理:重定向回主页。mark1 3)对单击表单中的“写好了! ”按钮的处理,这又有两种情况: (1)昵称和Email不空的情况处理mark2 连接数据库服务器; 存入数据; 关闭数据库服务器连接; 向浏览器输出成功的信息; 重定向回主页。 (2)昵称和Email为空的情况处理:向浏览器输出出错的信息。mark3 4)此程序中用到的变量祥解。 变量名 取值 含义 $text 空字符串 预

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论