资源描述
目 录摘 要 .11. 绪论 .21.1 概论 .21.2 论坛定义和系统基本功能 .22系统开发的环境和工具 .32.1 系统开发的环境 .32.2 MYSQL数据库简介 .32.3 APACHE服务器简介 .32.4 PHP语言简介 .43需求分析及详细设计 .53.1 论坛的需求规划 .53.2 论坛总工作流程图 .63.3 数据库设计部分 .83.4 程序设计部分 .113.5 关键技术 .163.6 网站文件结构 .193.7 论坛设计存在问题 .214总结 .22参考文献 .23致 谢 .241摘 要校园论坛是校园网中不可缺少的部分之一。虽然基于 ASP+ACCESS的论坛使用简洁,安装方便,但 MySQL数据库以它短小、方便、速度快、免费等优点成为很多站点目前首选数据库,加上 PHP语言也具有可跨平台、移植性高,安全可靠,快速高效的优点,因此目前很多流行论坛程序都采用了 Apache+Php+Mysql相结合来开发论坛,所以我们也使用动态跨平台语言 PHP和现在非常流行的 Web服务器 Apache,通过与适合开发中型网站的 MySQL数据库进行无缝结合,做一个计算机系的学校论坛,并为论坛用户提供了周到和个性化的服务。关键词:PHP,Apache,MySQL,BBS,论坛,计算机系,技术,交流,网站,设计,规划。ABSTRACT: BBS campus network is one of the indispensable parts. Although the BBS based on ASP and ACCESS use concise, convenient installation, but in its short MySQL database, convenient, quick and free as many advantages such as database, and at first site with cross-platform PHP language and portability, high, safe and reliable, efficient, so many of the advantages of using BBS popular program I can with Apache+ PHP+MySQL combination to develop BBS, so we also use dynamic cross-platform language PHP and now very popular Web server for development, and I can with Apache medium-sized websites on the MySQL databases, do a seamless BBS, computer department of the school and offers considerate BBS for users with personalized service.KEYWORDS:PHP, Apache, MySQL, BS,computer, technology, communication, websit, design, plannin.21. 绪论1.1 概论BBS 起源于 20 世纪 80 年代初。最初,论坛只是用于发布公告信息,讨论问题的在线交流平台。后来,随着网络的普及,论坛的功能越来越丰富,受到广大网民的欢迎。因此,校园网站对论坛重视起来,纷纷在自己的网站上开辟论坛。作为与师生交流的园地。同时在线技术支持和在线服务也在论坛中开展起来。当代的大学生几乎都会接触甚至经常登陆自己感兴趣的论坛,在上面可以分享,也可以交流意见,但是,能把他们集中起来的论坛并不是很多。目前,很多人选择这样的组合:Apache+Php+MySQL 来建设自己的论坛,因为它们都可以免费从网上下载,而且很容易在 Linux 平台下应用,网站安全性、稳定性和执行效率都非常优秀。1.2 论坛定义和系统基本功能论坛也称为 BBS,是 bulletin Board System 的简称,意即电子公告板,是一种在Internet 上常见的用于信息服务的 Web 系统,它主要给浏览者提供相互沟通的平台,以此来吸引用户,服务用户。开发本系统意在吸纳大部分游离在众多论坛的计算机系大学生和喜欢计算机的学生,能一起共享计算机资源,能一起谈谈学习计算机过程的经验。32系统开发的环境和工具2.1 系统开发的环境本论坛在 Linux 平台下应用,采用 Apache+Php+MySQL 建设。2.2 MySQL数据库简介MySQL(发音为“my ess cue e”,不是“my sequel”)是一种开放源代码的关系型数据库管理系统(RDBMS) ,MySQL 数据库系统使用最常用的数据库管理语言结构化查询语言(SQL)进行数据库管理。由于 MySQL 是开放源代码的,因此任何人都可以在 General Public License 的许可下下载并根据个性化的需要对其进行修改。MySQL 因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL 是管理内容最好的选择。MySQL 关系型数据库于 1998 年 1 月发行第一个版本。它使用系统核心提供的多线程机制提供完全的多线程运行模式,提供了面向C、C+、Eiffel、Java、Perl、PHP、Python 以及 Tcl 等编程语言的编程接口(APIs ) ,支持多种字段类型并且提供了完整的操作符支持查询中的 SELECT 和 WHERE 操作。MySQL 开发组计划于 2001 年中期公布 MySQL4.0 版本。在这个版本中将有以下新的特性被提供:新的表定义文件格式、高性能的数据复制功能、更加强大的全文搜索功能。在此之后,MySQL 开发着希望提供安全的数据复制机制、在 BeOS 操作系统上的 MySQL 实现以及对延时关键字的定期刷新选项。随着时间的推进,MySQL 将对 ANSI 92/ANSI 99 标准完全兼容。2.3 Apache服务器简介apache是世界排名第一的 web服务器, 根据 netcraft所作的调查,世界上百分4之五十以上的 web服务器在使用 apache. 1995年 4月, 最早的 apache(0.6.2版)由 apache group公布发行. Apache group 是一个完全通过 internet进行运作的非盈利机构, 由它来决定 apache web服务器的标准发行版中应该包含哪些内容. 准许任何人修改隐错, 提供新的特征和将它移植到新的平台上, 以及其它的工作. 当新的代码被提交给 apache group时, 该团体审核它的具体内容, 进行测试, 如果认为满意, 该代码就会被集成到 apache的主要发行版中。2.4 PHP语言简介PHP 最初是 1994年 Rasmus Lerdorf创建的,刚刚开始只是一个简单的用 Perl语言编写的程序,用来统计他自己网站的访问者。后来又用 C语言重新编写,包括可以访问数据库。在 1995年以 Personal Home Page Tools (PHP Tools) 开始对外发表第一个版本,Lerdorf 写了一些介绍此程序的文档,并且发布了 PHP1.0。在这早期的版本中,提供了访客留言本、访客计数器等简单的功能。以后越来越多的网站使用了 PHP,并且强烈要求增加一些特性,比如循环语句和数组变量等等,在新的成员加入开发行列之后,在 1995年中,PHP2.0 发布了。第二版定名为PHP/FI(Form Interpreter)。PHP/FI 加入了对 MYSQL的支持,从此建立了 PHP在动态网页开发上的地位。到了 1996年底,有 15000个网站使用 PHP/FI;时间到了1997年中,使用 PHP/FI的网站数字超过五万个。而在 1997年中,开始了第三版的开发计划,开发小组加入了 Zeev Suraski 及 Andi Gutmans,而第三版就定名为PHP3。2000 年,PHP4.0 又问世了,其中增加了许多新的特性。 PHP程序驻留在内存中,其他用户再一次访问这个程序时就不需要重新编译程序了,只要直接执行内存中的代码就可以了,这也是 PHP高效率的体现之一。PHP 具有非常强大的功能,所有的 CGI或者 JavaScript的功能 PHP都能实现,而且支持几乎所有流行的数据库以及操作系统。PHP(Personai Home Page)是一种易于学习和使用的服务器端脚本语言.只需要很少的编程知识就能使用 PHP建立一个真正交互的 web站点。53需求分析及详细设计3.1 论坛的需求规划用户使用论坛,有一定的流程:用户注册登录进入论坛,就某个话题(主题贴)展开讨论,通过发贴功能发布新的话题,通过回贴的功能回复已有的话题,通过搜索功能查找已的话题;管理通过管理功能创建、编辑、删除论坛的板块,管理注册的用户,管理贴子。设置论坛的基本参数。这样的流程就决定了论坛的需求。下面是系统的功能需求和分析:(1)用户类有注册、登录和管理 3个方法,管理方法又分为修改、删除和设置权限3个子方法,如图 3.1所示:用户管理员修改个人信息注册登录 设置权限添加删除管理用户图 3.1管理员与用户关系(2)帖子类有浏览、发帖、回帖、搜索和管理 5个方法,管理方法又可以分为编辑、删除、转移指定精华 5个方法.如图 3.2所示:用户管理员浏览帖子搜索回帖 编辑指定精华转移删除发帖管理帖子图 3.2管理员、用户以及帖子之间的关系(3)用户功能:1) 用户注册:用户可以注册为该系统成员(需超级管理员审批后方可发主题贴),注册信息要求有登陆的用户名、密码、电子邮件等,在发表主题贴和跟贴时,记录其登陆信息。2) 用户登陆:对于注册用户(已获审批) ,可以凭其注册用户名和密码进入系6统。3) 修改个人信息:用户进入自己的板块后可以修改个人信息。4) 帖子浏览:注册用户可以任意浏览权限内的帖子,未注册用户只能浏览,不能回复。5) 帖子检索:用户可以提供关键字检索可见主题帖,注册用户可以查看自己发表的帖子; 帖子回复:注册用户可以回复帖子。6) 发表主题:用户发表一个讨论的主题,包括标题和正文等。7) 帖子编辑:管理员可以对所有帖子进行转移,删除,加精等操作,用户也可以对自己的帖子进行修改或者删除。(4)管理员功能:1) 用户的审批:注册用户成功后,帐号不能发主题贴,须管理员审批;审批之后用户可以进行相关的操作。2) 论坛可以分版块(添加、删除):每一版块可以有若干个版主,版主负责管理本版块内的帖子(删除) 。3) 删除主题:超级管理员可以删除任何人的主题贴;版主只能删除本版内任何人发表的主题贴。4) 回复主题:回复已经发表的主题(记录回复人信息:注册用户的用户名、发表时间) 。(5)性能需求:1) 会员管理员权限区分;2) 发帖延时保持无滞后;3) 任何地方无编译错误;4) 页面美观大方,操作方便直观,有安全保障机制。3.2 论坛总工作流程图(1)注册登录搜索管理板块浏览板块管理用户发帖浏览帖子回帖管理帖子管理员用户浏览者图 3.3 论坛工作流程图7从流程 3.3 图上可以看到论坛完成的走向,每一个流程的节点处都有许多功能,见下表(论坛功能列表)3.4 所示:表 3.4 论坛功能论坛板块列表 浏览帖子 发帖回帖 搜索帖子编辑帖子 删除帖子 精华帖 置顶转移帖子 用户注册 用户登录 控制用户权限修改注册信息 设置论坛参数 管理板块 管理用户(2)功能界面框图:(如图 3.5 所示) BBS 论坛系统系统主要功能模块会员注册 会员管理会员登录 帖子管理论坛板块管理帖子发表 帖子回复 帖子浏览 帖子检索图 3.5 功能界面(3)论坛功能和用户权限对应表:论坛一般存在两种用户,分别为注册用户和管理员。用户的权限是向下覆盖的,即上级权限包含下级权限,在这里的论坛中,管理员的权限是上级权限。接下来,需要归好类的对象及其方法分配给不同的论坛用户。具体功能的分配结果见表 3.6所示:表 3.6用户权限对应对象实体 功能方法 用户类型论坛 设置参数 管理员浏览列表 浏览者创建板块 管理员修改板块 管理员板块删除板块 管理员浏览列表 浏览者查看列表 浏览者发帖 注册用户帖子回帖 注册用户8搜索 浏览者编辑(自己所有) 注册用户编辑(全部) 管理员删除 管理员指定精华 管理员转移 管理员注册 浏览者登陆 注册用户管理员登陆 管理员添加 管理员删除 管理员用户设定权限 管理员3.3 数据库设计部分(1)数据库: xxu_jsj命令:CREATE DATABASES xxu_js;(2)表的结构 bbs_admin命令:CREATE TABLE IF NOT EXISTS bbs_admin (name varchar(32) character set gb2312 collate gb2312_bin NOT NULL COMMENT 管理员名,password varchar(32) character set gb2312 collate gb2312_bin NOT NULL COMMENT 管理员密码,PRIMARY KEY (name) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT=管理员;-(3)表的结构 bbs_notice命令:CREATE TABLE IF NOT EXISTS bbs_notice (ID int(8) unsigned NOT NULL auto_increment,title varchar(32) collate utf8_unicode_ci NOT NULL COMMENT 公告标题,content text collate utf8_unicode_ci NOT NULL COMMENT 公告内容,Ndate datetime NOT NULL COMMENT 公告发布时间,PRIMARY KEY (ID) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT=公告信息 AUTO_INCREMENT=10 ;- (4)表的结构 bbs_plate命令:CREATE TABLE IF NOT EXISTS bbs_plate (9ID int(8) NOT NULL auto_increment COMMENT 板块 ID,name varchar(32) character set gb2312 collate gb2312_bin NOT NULL COMMENT 板块名称,PRIMARY KEY (ID) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT=板块 AUTO_INCREMENT=6 ;(5)表的结构 bbs_posts命令:CREATE TABLE IF NOT EXISTS bbs_posts (PID bigint(16) NOT NULL auto_increment COMMENT 帖子 ID,Pname varchar(64) character set gb2312 collate gb2312_bin NOT NULL COMMENT 帖子标题,Pcontent text character set gb2312 collate gb2312_bin NOT NULL COMMENT 帖子内容,Pauthor varchar(32) character set gb2312 collate gb2312_bin NOT NULL default 佚名 COMMENT 帖子作者,Pplate int(8) NOT NULL COMMENT 帖子所属板块,Pdate datetime NOT NULL COMMENT 发帖时间,PRIMARY KEY (PID) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT=帖子表 AUTO_INCREMENT=47 ;(6)表的结构 bbs_reply命令:CREATE TABLE IF NOT EXISTS bbs_reply (RID int(32) NOT NULL auto_increment COMMENT 回帖 ID,Rauthor varchar(32) character set utf8 collate utf8_unicode_ci NOT NULL COMMENT 回帖作者,Rcontent text character set utf8 collate utf8_unicode_ci NOT NULL COMMENT 回帖内容,Rdate datetime NOT NULL COMMENT 回帖时间,RPID int(32) NOT NULL COMMENT 所属帖子,Rfloor int(16) NOT NULL COMMENT 回帖楼层,PRIMARY KEY (RID) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT=回复帖子 AUTO_INCREMENT=74 ;(7)表的结构 bbs_resources命令:CREATE TABLE IF NOT EXISTS bbs_resources (REID 0r set utf8 collate utf8_unicode_ci NOT NULL COMMENT 资源名称,RElength varchar(16) NOT NULL COMMENT 资源大小,RElink varchar(256) character set utf8 collate utf8_unicode_ci NOT NULL COMMENT 链接地址,REmarks text character set utf8 collate utf8_unicode_ci COMMENT 资源备注信息,REtime datetime NOT NULL COMMENT 更新时间,PRIMARY KEY (REID)10) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT=资源列表 AUTO_INCREMENT=26 ;(8)表的结构 bbs_webinfo命令:CREATE TABLE IF NOT EXISTS bbs_webinfo (WID int(16) unsigned NOT NULL auto_increment COMMENT 网站信息 ID,Wname varchar(32) collate gb2312_bin NOT NULL COMMENT 信息名,Waddress varchar(64) collate gb2312_bin NOT NULL COMMENT 信息所在处,Wcontent text collate gb2312_bin NOT NULL COMMENT 信息内容,Walt varchar(64) collate gb2312_bin NOT NULL COMMENT 注释信息,PRIMARY KEY (WID) ENGINE=MyISAM DEFAULT CHARSET=gb2312 COLLATE=gb2312_bin COMMENT=网站信息表 AUTO_INCREMENT=9 ;(9)表的结构 blog_lm命令:CREATE TABLE IF NOT EXISTS blog_lm (LID bigint(32) unsigned NOT NULL auto_increment COMMENT 留言 ID,Lauthor varchar(32) collate gb2312_bin NOT NULL COMMENT 留言人,Lcontent text collate gb2312_bin NOT NULL COMMENT 留言内容,Ldate datetime NOT NULL COMMENT 留言时间,LUID bigint(32) NOT NULL COMMENT 留言对象,PRIMARY KEY (LID) ENGINE=MyISAM DEFAULT CHARSET=gb2312 COLLATE=gb2312_bin COMMENT=留言表 AUTO_INCREMENT=1 ;(10)表的结构 blog_log命令:CREATE TABLE IF NOT EXISTS blog_log (LID bigint(32) unsigned NOT NULL auto_increment COMMENT 日志 ID,Ltitle varchar(64) collate gb2312_bin NOT NULL COMMENT 日志标题,Lauthor varchar(32) collate gb2312_bin NOT NULL COMMENT 日志作者,Lcontent text collate gb2312_bin NOT NULL COMMENT 日志内容,Ldate datetime NOT NULL COMMENT 日志发表时间,Lcategory varchar(32) collate gb2312_bin default NULL COMMENT 文章分类,PRIMARY KEY (LID) ENGINE=MyISAM DEFAULT CHARSET=gb2312 COLLATE=gb2312_bin COMMENT=用户日志 AUTO_INCREMENT=2 ;(11)表的结构 blog_music命令:CREATE TABLE IF NOT EXISTS blog_music (MID bigint(32) unsigned NOT NULL auto_increment COMMENT 音乐 ID,Mname varchar(32) character set gb2312 collate gb2312_bin NOT NULL COMMENT 音乐名,11Maddress varchar(255) character set gb2312 collate gb2312_bin NOT NULL COMMENT 音乐地址,Mdate datetime NOT NULL COMMENT 音乐上传时间,Mauthor varchar(32) character set gb2312 collate gb2312_bin NOT NULL COMMENT 歌曲歌手,Mstowr varchar(32) character set gb2312 collate gb2312_bin NOT NULL COMMENT 上传人,PRIMARY KEY (MID) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;(12)表的结构 blog_photo命令:CREATE TABLE IF NOT EXISTS blog_photo (PID bigint(32) unsigned NOT NULL auto_increment COMMENT 相册 ID,Pname varchar(32) collate gb2312_bin NOT NULL COMMENT 相册图片名,Paddress varchar(254) collate gb2312_bin NOT NULL COMMENT 图片地址,Pdate datetime NOT NULL COMMENT 图片上传时间,Pauthor varchar(32) collate gb2312_bin NOT NULL COMMENT 图片上传人,PRIMARY KEY (PID),UNIQUE KEY Paddress (Paddress) ENGINE=MyISAM DEFAULT CHARSET=gb2312 COLLATE=gb2312_bin COMMENT=用户相册 AUTO_INCREMENT=1 ;(13)表的结构 users命令:CREATE TABLE IF NOT EXISTS users (UID bigint(32) unsigned NOT NULL auto_increment COMMENT 用户 ID,Uname varchar(32) collate gb2312_bin NOT NULL COMMENT 用户名,Upwd varchar(32) collate gb2312_bin NOT NULL COMMENT 用户密码,Uemail varchar(64) collate gb2312_bin NOT NULL COMMENT 用户 E-mail,Unickname varchar(32) collate gb2312_bin NOT NULL COMMENT 用户昵称,Uportrait varchar(254) collate gb2312_bin NOT NULL COMMENT 用户头像,Uage int(8) unsigned default 0 COMMENT 用户年龄,Uautograph varchar(255) collate gb2312_bin default NULL COMMENT 用户个性签名,PRIMARY KEY (UID),UNIQUE KEY Uname (Uname) ENGINE=MyISAM DEFAULT CHARSET=gb2312 COLLATE=gb2312_bin COMMENT=用户信息表 AUTO_INCREMENT=4 ;3.4 程序设计部分(1)系统注册模块: ?php$name=trim($_POSTuname); / 接收表单中的数据$pwd=trim($_POSTpassword); /获取密码$pwd0=trim($_POSTpassword0); /获取重复的密码12$email=trim($_POSTemail); /获取 E-mail地址if($name= or $pwd= or $pwd0= or $email=) / 判断是否填写完整echo 请完善您的信息!;else if($pwd!=$pwd0) / 判断两次密码的一致性echo 两次密码输入不一致!请重新输入!;else$query=select * from users where Uname=$name; / 判断用户名是否已存在$ynname=mysql_query($query,$link);$rows=mysql_num_rows($ynname);if($rows)echo 此用户名(.$name.)已存在!;else / 用户名不存在时插入用户输入的信息$Iquery=insert into users(Uname,Upwd,Uemail)values($name,$pwd,$email);$result=mysql_query($Iquery,$link);if($result)$_SESSIONadmin=$name;echo alert(注册成功!);window.location.href=index.php; /提示注册成功,确定后跳转到首页?(2)系统登陆模块:?php$admin=false;session_start();include back/sqlpwd.php; / 调用全局 MySQL用户名和密码信息$_SESSIONadmin=null;$uname=$_POSTuname;$upwd=$_POSTupwd;$query=select * from users where Uname=$uname and Upwd=$upwd;$result=mysql_query($query,$link); / or die(查询失败!.mysql_errno().:.mysql_error()$uinfo=mysql_fetch_array($result);if($uinfo)$_SESSIONadmin=$uinfoUname;13mysql_free_result($result);echo window.navigate(index.php);echo 如果没有自动跳转,请点击返回首页;?(3)系统发表帖子模块:?php$plate=mysql_query(select *from bbs_plate); /查询板块表$Pplates=mysql_fetch_array($plate);$Pnum=mysql_num_rows($plate); /统计板块个数$Pnum$i=1;doecho .$Pplatesname. $i+;while($i=$Pnum and $Pplates=mysql_fetch_array($plate); if($_SESSIONadmin)echo 会员发帖;? 发表新帖 作者: 标题: 选择板块: option name=S_plate value= 正文: 注意:在发表之前请确定选择所属板块! ?php /发表帖子的提交处理程序$pname=trim($_POSTpost_name); / 获取新发表的帖子名$S_plate=$_POSTS_plate; / 获取所属板块echo $S_plate;for($s=1;$s=$count;$s+)/$S_plate=$count$s;$P_content=trim($_POSTP_content); /获取帖子内容if($pname= or $S_plate= or $P_content=)echo 填写不完整,请完善!;else$newpost=mysql_query(insert into bbs_posts(Pname,Pcontent,Pauthor,Pplate,Pdate)values($pname,$P_content,$_SESSIONadmin,$S_plate,NOW()or die(mysql_error();if($newpost)echo alert(发表成功!);window.location.href=posts.php?pid=.$S_plate.;?(4)系统回复帖子模块:快速回复: 15 ?php$replytxt=trim($_POSTreplytxt); /获取回内容if($_SESSIONadmin and trim($replytxt)!=)$last=mysql_query(SELECT * FROM bbs_reply where RPID=$pid order by Rfloor desc limit 0,1); /查询最高楼层数$Rrnum=mysql_fetch_array($last); /获取最高楼层数$now=$RrnumRfloor; /回复时用的楼层数$nowfloor=(int)$now+1;/INSERT INTO bbs_reply (RID, Rauthor, Rcontent, Rdate, RPID, Rfloor) VALUES (NULL, admin, 测试回复 0, NOW(), 2, 1);$Rinsert=mysql_query(INSERT INTO bbs_reply (RID, Rauthor, Rcontent, Rdate, RPID, Rfloor) VALUES (NULL, $_SESSIONadmin,$replytxt,NOW(),$pid,$nowfloor); / 插入回帖内容if($Rinsert) /判断发表成功与否$replytxt=;echo 发表成功!;/Header(location:post.php?pid=.$pid);echo window.location.href=post.php?pid=.$pid.; elseecho 警告:游客不能发帖、回复!;?(5)管理员功能模块:1) 公告管理(增、删、改)2) 用户管理(删、改)3) 帖子管理(增、删、改)4) 板面管理(增、删、改)5) 修改密码(修改)6) 网站信息(修改)7) 下载资源(增、删、改)8) 网站预览(查看)169) 友情链接(增、删、改)3.5 关键技术(1)分页:帖子列表、下载资源、回帖等金条信息的分布问题解决办法:现以帖子列表为例说明,显示某板块的帖子先查询本板块的帖子总数,使用变量$pcont=mysql_num_rows()获得查询总数,设变量$P 为每页显示条数,$page_c 为总页数等于$pcont/$p 在$pcont/$p 的余数大于等于 1时$page_c=$pcont/$p 等于 0时$page_c=$pcont/$p +1。目前已得到总页数和每页显示条数,接下来是显示其中页数为$page 的页面,从何处开始查询,因为在 MySQL时可以从倒数第某条开始查询几条,接下来就确定查询开始的位置$onset,$onset=($page-1)*$p+1,因此查询语句为:select * from 表名 where 查询条件 limit $onset,$p。接下来是显示分页结果,要求页数为第一页时不显示“前一页” ,当前页数没有超链接,页数为最后一页时不显示“下一页” 。实现方法:判断当前页是否为第一页,是,则输出空内容,否,则输出“前一页” ,是否显示“下一页”同上,在“前一页”与“下一页”之间输出所有页数,使用 for循环输出,在循环内部做判断欲输出的页数是否等于当前页数,是,则只输出页数,否,则输出带超链接的页数,并在页面文件开始处获取通过地址栏传递过来的页数,就可以查询输出了。示例代码:0)$c_page=(int)($count/$p)+1; /总页数+1else$c_page=(int)($count/$p); /总页数+0if($page=1)$onset=0; /查询起始(倒数)位置17elseif($page!=1) $onset=$p*($page-1)-1;$result=mysql_query(SELECT * FROM bbs_resources ORDER BY REID desc LIMIT $onset,$p);$res=mysql_fetch_array($result);? ID编号 名称 资源介绍 a target=_blank href= a target=_blank href= TOP 1) /检查是否是第一页 不是则显示$early=$page-1;echo 前一页 /链接到 re并传递页数 page /是每一页则不显示“第一页”for($i=1;$i=$c_page;$i+)if($i!=$page) / 判断当传递的页数!=当前要显示数字时输出页数链接echo .$i. /链接到 re并传递页数 pageelseif($i=$page)echo $page; / 判断当传递的页数=当前要显示数字时输出页数(无链接)/检查是否是最后一页18if ($page$c_page) / 不是最后一页是显示 “下一页” 否则不显示$lastp=$page+1;echo 下一页; echo 当前第.$page.页 总共.$c_page.页;?(2)连接数据库重复代码处理: 连接数据库的语句虽然简单但重复很多次,一旦修改数据库信息则会出现修改很麻烦,为此要建立一个真心诚专门连接数据库的信息,而在其他页面加上一句引用这个页面的语句就行了,一旦数据库连接信息变动了,只要修改一下那个专门的页面就行了。示例代码:Sqlpwd.php文件其他页面调用:(3)后台管理安全: 在后台的每个页面(除了后台登录页面)的之外加上些 PHP语句作判断管理员是否已登录,是,则显示页面内容,否,则返回后台登录页面。这样非管理员用户是无法登录后台(无密码登录) ,而在前台首页进入后台的入口,而只有“admin”用户登录时才会显示后台登录链接,除了这个方法进入后台登录页面外,还可以直接输入网址进入后台登录页面,但必须有管理权限。示例代码:19(4)(回)帖子显示格式:发帖回帖时都是用的文本输入框,然而读取用文本输入框写入的数据时直接显示在网页上是没有格式的,没有换行基本的段落都没有了,为解决这个问题,在输出时也用文本框但要设置其属性为自动变长而没有滚动条,这样就有了输入时的段落,也会看起来就像是直接输出到网页中又有段落修饰过的样子。 (5) 网站版权信息设置:因网站每个页面都要显示同样的版权信息,且站主可以在以后能修改看自定义的版权信息,这样就要用到重复代码的重复调用和可修改。解决办法就是版权信息的 HTML 代码是从数据库里读取的,只用在每个页面加上 PHP 代码连接数据库并输出版权信息 HTML 代码,在后台有版权信息的修改功能,站主可以看以自定义欲显示的内容,但必须用 HTML 代码才行。3.6 网站文件结构images(图片文件夹)back(后台文件夹)| backlogon.php(后台登录页面)| changepwd.php(修改后台管理员密码)| delnot.php(删除公告)| delplate.php(删除板块)| delpost.php(删除帖子)| delre.php(删除下载资源)| delreply.php(删除回复)| deluse.php(删除用户)| edinot.php(编辑公告)| ediplate.php(编辑板块)20| edipost.php(编辑帖子)| edire.php(编辑下载资源信息)| ediuse.php(编辑用户信息)| ediwebinfo.php(编辑网站信息)| index.php(后台首页)| left.php(左侧管理面板)| main.php(后台管理欢迎页面)| m_notices.php(管理公告)| m_plate.php(管理板块)| m_post.php(管理帖子)| m_post_re.php(管理帖子和回复)| m_re.php(管理下载资源)| m_user.php(管理用户)| m_webinfo.php(管理网站信息)| sqlpwd.php(MySQL连接信息)Connections()| mysql.php(MySQL信息)Scripts()| AC_RunActiveContent.js()SpryAssets()| SpryTabbedPanels.css()| SpryTabbedPanels.js()| SpryValidationTextField.css()| SpryValidationTextField.js()index.php(BBS首页)logout.php(退出处理)mm_menu.js()m_term_info.php(网站制作人信息)newpost.php(发表新帖)newusers.php(新用户注册)notice.php(公告)post.php(帖子及回复)posts.php(帖子列表)re.php(下载资源表)selectpost.php(搜索帖子)sqlpwd.xml(MySQL信息)uselogin.php(用户登录处理程序)usrinfo.php(用户个人信息)213.7 论坛设计存在问题1) 管理员对用户设置权限还未实现2) 管理员对帖子指定精华也没实现3) 注册用户现在不需要经过管理员审批4) 个人信息还比较简单5) 注册拥用户陆后还无法对自己发表过的帖子进行管理(修改、删除)6) 上传图片功能还无法实现,用户无法上传头像、帖图,管理员无法上传 LOGO等图片7) 发帖和加帖内容还只能由纯文本形式出现,还不能加入图片、音乐、附件之类8) 网站总体的界面还没有进一步美化、规划,看起来布局不是很合理也不美观9) 论坛的安全性有待测试和完善224总结23参考文献1邹天思,孙鹏等。 PHP 从入门到精通 。清华大学出版社,2008 年2Luke Welling Laura Thomson PHP 和 MySQL Web开发 机械工业出版社 2005年3(美)Larry Ullman PHP 6 与 MySQL 5基础教程 人民邮电出版社 2008 年24致 谢
展开阅读全文