<gengxindate>2003-12-6 5:53:38</gengxindate>
<body>1楼回复的内容</body>
</reply>
<reply>
<anthor>plgirl</anthor>
<date>2003-12-7 5:53:38</date>
<gengxindate>2003-12-7 5:53:38</gengxindate>
<body>2楼回复的内容</body>
</reply>
</record>
</document>
]
这是本例论坛帖子的XML存储结构,现在我们建立起了会员资料存储文件(user.xml)以及论坛帖子存放地点和存放结构(data\*.xml),你是否以有所启发?用程序在这两者基石上搭桥引线是否真的能够实现复杂的论坛系统哪?答案是肯定的,只要能通过程序在后台操纵这两个存储基地,加以友好的界面,即可小试牛刀
}
第三节:诸葛布阵、将士磨刀
XML数据存储结构以完成,下面一一列出完成论坛大业所需要的材料
项目包括{
通用函数页
(建立或一或二这种通用函数页或DLL或者是用户控件,将常用的程序过程、变量、函数放入其中,此后使用可大大节省时间避免重复劳动,这在下一章将有所提及)
游客与会员的区分
(即是一个session,本例为session("who")值是否存在的判断,如存在即判断是会员,如不存在值即为游客,我们本例不使用cookies存储用户数据,游客权限自然是只能浏览帖子,不能发表或回复帖子,而会员则可以)
会员注册
(包含各种表单的页面,目的是完成向user.xml添加一新的标签节点(等同添加一新的会员数据),要处理好用户所提交的数据,方法要用到防止跨站提交、会员帐号(即XML节点头标签)要用正则表达式限制为类似程序变量的语法要求或干脆只允许使用英文字母、XML节点属性至少要过滤<>&"'以及回车符号、防止申请的会员帐号以存在user.xml、所有数据英文符号均转换为小写格式即不区分大小写包括用户帐号和密码)
会员登陆
(包含用户帐号输入框、密码输入框和一个登陆按钮,提交后利用XMLDOM搜索user.xml是否有匹配的用户帐号(要特别注意过滤用户提交的数据,尤其是*号等,这在XMLDOM的搜索中被认为是通配符),如user.xml存有该帐号,即将一个session,本例为session("who"),设值为该用户帐号,游客身份即成为会员身份)
会员资料修改
(禁止游客浏览本页,样式保持与会员注册页的表单基本一样(但不包含用户帐号名称修改的功能),只不过所有表单的值均是预读了user.xml中匹配session("who")该会员的信息,用户修改过后,单击完成修改按钮,此时后台程序修改user.xml中该会员对应的节点数据即可)
会员资料显示
(只读页面,读取网址参数中对应的会员帐号,显示会员所有无需保密的信息)
一个论坛栏目主页
(即帖子列表,根据URL页码参数分页,显示data目录中对应页码的所有帖子信息,排序自然根据文件的修改日期,最新更新的最靠顶,这是开发本论坛中最难的一个项目之一,要谨慎处理,最好实现点对点(即1-10,30-40,100-110)形式分页的抽取data目录中的文件,可以保证最优质的运行速度)
帖子显示页
(本例的帖子显示是直接在浏览器访问XML文件,即http://xxx.xxx.xxx/xxx.xml的URL形式访问,由于仅仅使用静态XSL控制XML文件的二层输出形式是远远不够的,所以我们采取的显示结构是三层,其顺序为(1:打开XML文件后查找xml-stylesheet节点的href所指定的XSL文件---2:由于目标文件类型是aspx,我们在目标aspx中根据url参数访问参考对应的XML文件数据,控制数据流输出格式为xsl,丛中很好的整理出理想的xsl样式表,即起到了中间层的关键作用---3:由于aspx输出的xsl是我们在后台整理过的,其高度的智能、合理,即可以配合XML数据输出结构复杂的帖子显示页),期间中间层的开发难度最大,是本论坛系统中最难的一个步骤,简单的地方是XMLDOM分析抽取目标XML中的节点数据,实现显示主题、显示帖子作者、显示帖子内容、显示帖子所有回复,但最难点,本人在着手开发时,就无法解决帖子回复的分页,以及aspx服务器端控件和xsl文档规范相互冲突,可能是本人水平有限,或也是本人原创的这种3层输出存在本质的缺陷,所谓XML实现数据库容易,但通过XSL实现超越HTML的理想输出难)
发表新贴
(禁止游客发表,该项目即是一个输入主题的输入框 内容输入框 提交按钮,可以绑定在栏目帖子列表页下方或新建一个专页,用户提交发表后要用server.HTMLEncode()过滤用户所提交的数据,而后用程序创建XML文件、给XML文件起名、整理XML文件的文件格式如第二节所写的格式、向节点内写入过滤后的数据、修改user.xml对应的发贴会员的节点实现积分 2和发贴数 1,用cookies限制7秒内禁止多次提交灌水)
回复新贴
(禁止游客回复,该页可绑定帖子显示页下方或新建一个专业,提供一内容输入框 提交按钮,提交后如发表新贴过程类同,要进行数据过滤,而后在对应的帖子存储XML文件中插入一reply节点,在该节点中建立用于存储回复作者名称、回复内容、回复日期、回复更新日期等节点,修改user.xml对应的发贴会员的节点实现积分 1和发贴数 1,用cookies限制7秒内禁止多次提交灌水)
版主管理功能
(要实现密码验证,判断禁止游客及会员使用,可选的后台管理功能有奖励会员积分、减少会员积分、删除会员、修改任何帖子、删除任何帖子,甚至可以考虑诸多封IP、置顶、锁定、封版主等等高级功能)
}
第四节:君临沙场、锦囊相助
通过以上三节修炼,君若仔细攻读,定已胸有成竹,跃跃欲试,此时想必已经动起手来,或者是思路很清晰却不知程序该如何写,若真是如此,不必急噪,笔者先将平生所学一些常用“兵法”一一列出,定可使汝茅塞顿开
1:错误提示函数(需要时使用,可弹出对话框给与用户错误提醒,而后自动退回上一页,此函数建议保存为一通用文件,需要时<!--#include file="publicfun.aspx"-->一下即可使用)
<script language=vb runat='server'>
sub t2(tstr2 as string)
response.write (replace("<script language=vbs> msgbox " & chr(34) & tstr2 & chr(34) & ",16," & chr(34) & "错误提示" & chr(34) & ":history.back()</script>","<","<")):response.end
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




