<?xml version="1.0" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="css/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>网站建设电子商务博客 - 基于Web的通用BBS系统的建立与维护(ASP)</title><link>http://www.verykk.com/</link><description>网站制作|SEO优化推广|网络维护|平面设计 - </description><generator>RainbowSoft Studio Z-Blog 1.8 Walle Build 91204</generator><language>zh-CN</language><copyright>&amp;amp;copy; 2007-2009 Powered By 田贤追博客 All rights reserved. 浙ICP备09005319号·</copyright><pubDate>Mon, 06 Sep 2010 22:16:52 +0800</pubDate><item><title>基于Web的通用BBS系统的建立与维护(ASP)  结束语</title><author>a@b.com (adminnyee)</author><link>http://www.verykk.com/post/443.html</link><pubDate>Fri, 09 Jul 2010 20:31:31 +0800</pubDate><guid>http://www.verykk.com/post/443.html</guid><description><![CDATA[<p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">完成这次设计任务总共用了六个星期时间，前三个星期用来收集资料、学习要用到的各项开发技术、进行论坛的系统分析，中间两个星期用来设计系统，后一个星期用来测试及修改。论文的撰写一直贯穿其中。<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">为本系统总共设计近六十个<span lang="EN-US">ASP</span>网页，近万行代码，七个数据表。通过这次毕业设计，我从中学到了许多新的知识，而且通过这次毕业设计，培养了我综合多门学科中的知识、迅速规划并开发出目标系统的能力，以及编程能力也有了很大的提高。另外也有许多心得体会，所谓系统开发如人生百味，酸甜苦辣皆有之。<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">严格按工程的方法来设计系统相当重要，不能认为基于<span lang="EN-US">Web</span>的数据库管理的<span lang="EN-US">BBS</span>系统很小，可以无需花太多的时间来做系统分析，甚至可以无需经过系统定义而直接进入系统编码阶段。这种想法很天真，最小的系统，你若想保证质量，把系统做得更可靠更有效率功能越强，应该考虑的方方面面就越多越复杂。系统分析过于简单，系统定义过于抽象，则在系统设计与编码阶段遇到的困难就越多，特别是其中若不得不做一些功能性甚至系统结构性方面的变动，将面对许多重复性的工作。在系统开发过程中重复工作过多，将会极大地影响系统开发的积极性，进而影响整个系统的质量。在这一点上，我体会尤深，我化了三个星期，即接近系统开发一半的时间用在系统分析与系统定义上，也就是在开始浪费了一周多的时间，即边编码边分析，边分析边编码，后来越来越乱越来越复杂，不得不重新考虑系统开发计划的合理性。总之，在这一点上，我的体会是，系统分析越充分，系统定义越具体，那么后续的系统设计与开发工作就越有效率，且系统的质量也越有保障。<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">本系统是一个最基本的基于<span lang="EN-US">WEB</span>的<span lang="EN-US">BBS</span>系统，可扩展性很大，科学的开发过程也极有利于系统的扩充与扩展。系统现在采用的是<span lang="EN-US">MS Access</span>数据库，视需要可以移植到<span lang="EN-US">MS SQL Server</span>或者其它大中型数据库系统环境下，只需改动少数几个<span lang="EN-US">ASP</span>功能模块文件。系统的分析与定义都结合了现在流行的面向对象方法以及传统的结构分析与设计方法，如果想采用似有流行趋势的<span lang="EN-US">ASP.NET</span>技术重写系统，最多也只需二个星期甚至更少的时间来作系统编码以及测试，效率相当高。<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">回顾这一个半月的系统开发工作，总结起来那就是，软件的开发是相当辛苦的，但成功以后的喜悦也是非常美妙的，而且我发现，其中你投入的心血越多，成功以后你所获得的快乐与充实感也更多更强。难道人越辛苦就会越幸福快乐吗？对，软件系统开发就是这样！<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 24pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 12pt; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体"><o:p><font face="宋体">&nbsp;</font></o:p></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 24pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 12pt; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体"><o:p><font face="宋体">&nbsp;</font></o:p></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 24pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 12pt; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体"><o:p><font face="宋体">&nbsp;</font></o:p></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 24pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 12pt; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体"><o:p><font face="宋体">&nbsp;</font></o:p></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 24pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 12pt; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体"><o:p><font face="宋体">&nbsp;</font></o:p></span></p><p>&nbsp;</p>]]></description><category>基于Web的通用BBS系统的建立与维护(ASP)</category><comments>http://www.verykk.com/post/443.html#comment</comments><wfw:comment>http://www.verykk.com/</wfw:comment><wfw:commentRss>http://www.verykk.com/feed.asp?cmt=443</wfw:commentRss><trackback:ping>http://www.verykk.com/cmd.asp?act=tb&amp;id=443&amp;key=ee9443d4</trackback:ping></item><item><title>系统的运行效果采用最基本的应用环境</title><author>a@b.com (adminnyee)</author><link>http://www.verykk.com/post/442.html</link><pubDate>Fri, 09 Jul 2010 20:29:28 +0800</pubDate><guid>http://www.verykk.com/post/442.html</guid><description><![CDATA[<p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">采用最基本的应用环境：<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">1</span><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">、硬件环境<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="100" unitname="m"><span lang="EN-US" style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">100M</span></st1:chmetcnv><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">以太网；<span lang="EN-US">PentiumIII IA</span>服务器；支持<span lang="EN-US">WIN98</span>以上的<span lang="EN-US">PC</span>客户机<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">2</span><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">、软件环境<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">服务器端安装了<span lang="EN-US">Windows NT4.0</span>系统、<span lang="EN-US">IIS4.0Web</span>服务器、<span lang="EN-US">MS Access2000</span>数据库等；客户端安装了<span lang="EN-US">Windows98</span>系统、<span lang="EN-US">IE5.0</span>浏览器等。<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">把本系统布置在如上所述最基本的应用环境下，本系统的运行是非常理想的。在经过超级会员一系列的论坛基本设置以后，就可以开始在论坛上发表贴子查看贴子回复贴子及进行其它论坛操作。系统的反应很快，读出页面基本上不需要多少时间，一晃就能出来。经过本系统各项功能操作测试，系统具有较好的稳定性。<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">把本系统布置在互联网上<span lang="EN-US">(http://www.brinkster.com)</span>，本<a href="http://www.verykk.com/post/160.html" target="_blank">网站</a>提供的基本功能有：支持<span lang="EN-US">ASP</span>或<span lang="EN-US">ASP.NET</span>，支持<span lang="EN-US">Access</span>数据库，但此数据库文件必须放置在<span lang="EN-US">[db]</span>。但是，此<a href="http://www.verykk.com/post/160.html" target="_blank">网站</a>不支持<span lang="EN-US">FTP</span>网站维护，只提供<span lang="EN-US">WEB</span>方式的网站内容更新，而且每次不能超<span lang="EN-US">5</span>个文件。<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">因本网站主机在北美，连接数据较慢，此外因数据更新较繁杂，只布置了一些论坛的基本功能，但是经过试运行，尽管速度有些慢，其系统运行相当稳定。</span><span lang="EN-US" style="font-size: 12pt; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体"><o:p></o:p></span></p><p>&nbsp;</p>]]></description><category>基于Web的通用BBS系统的建立与维护(ASP)</category><comments>http://www.verykk.com/post/442.html#comment</comments><wfw:comment>http://www.verykk.com/</wfw:comment><wfw:commentRss>http://www.verykk.com/feed.asp?cmt=442</wfw:commentRss><trackback:ping>http://www.verykk.com/cmd.asp?act=tb&amp;id=442&amp;key=153482e3</trackback:ping></item><item><title>超文本信息的显示</title><author>a@b.com (adminnyee)</author><link>http://www.verykk.com/post/441.html</link><pubDate>Fri, 09 Jul 2010 20:27:48 +0800</pubDate><guid>http://www.verykk.com/post/441.html</guid><description><![CDATA[<p>保存在数据库贴子数据表中的相关贴子标题以及内容的数据，是经过了HTMLEncode方法处理过的数据，而且数据中包含了大量的UBB标签，在显示贴子之前，应该将那些UBB标签作适当转换，以使用户浏览器能对其进行正确解释。<br />比如，对于&ldquo;<i>备注：中国载人航空火箭于2003年10月15日成功升空</i>&rdquo;,系统应该将其转换成&ldquo;&lt;I&gt;备注：中国载人航空火箭于2003年10月15日成功升空&lt;/I&gt;&rdquo;。对贴子内容中超文本信息的正确转换我们用到了VBScript里的正则表达式对象RegExp。<br />RegExp提供简单的正则表达式支持功能，它包括一系列的属性和方法，用于从一段文本中进行正则表达式模式匹配，找出或用一段文字替代与之相匹配的文本。<br />在VBScript对象包含三个属性以及支持三个方法，下面分别说明如下：<br />I、Global属性<br />设置或返回一个 Boolean 值，该值指明在整个搜索字符串时模式是全部匹配还是只匹配第一个。使用语法：object.Global [= True | False ]，object 参数总是 RegExp 对象。如果搜索应用于整个字符串，Global 属性的值为 True，否则其值为 False。默认的设置为 True。<br />II、IgnoreCase属性<br />设置或返回一个Boolean值，指明模式搜索是否区分大小写。使用语法：object.IgnoreCase [= True | False ]。object 参数总是一个 RegExp 对象。如果搜索是区分大小写的，则 IgnoreCase 属性为 False；否则为 True。缺省值为 True。<br />III、Pattern属性<br />这是正则表达式对象最重要的一个属性，设置或返回被搜索的正则表达式模式。使用语法：object.Pattern [= &quot;searchstring&quot;]。正则表达式对象将根据其正则表达式进行相应的模式匹配。<br />VI、Replace方法<br />替换在正则表达式查找中找到的文本。使用语法为：object.Replace(string1, string2)。Replace 方法的语法包含以下几个部分：object是必需，总是一个 RegExp 对象的名称；string1是必需的，string1 是将要进行文本替换的字符串；string2是必需的，string2 是替换文本字符串。被替换的文本的实际模式是通过 RegExp 对象的 Pattern 属性设置的。Replace 方法返回 string1 的副本，其中的 RegExp.Pattern 文本已经被替换为 string2。如果没有找到匹配的文本，将返回原来的 string1 的副本。<br />V、Execute方法<br />对指定的字符串执行正则表达式搜索。使用语法为：object.Execute(string)。Execute 方法的语法包括以下几个部分：object是必需的，总是一个 RegExp 对象的名称；string也是必需的，要在其上执行正则表达式的文本字符串。正则表达式搜索的设计模式是通过 RegExp 对象的 Pattern 来设置的。Execute 方法返回一个 Matches 集合，其中包含了在 string 中找到的每一个匹配的 Match 对象。如果未找到匹配，Execute 将返回空的 Matches 集合。<br />VI、Test方法<br />对指定的字符串执行一个正则表达式搜索，并返回一个 Boolean 值指示是否找到匹配的模式。使用语法为：object.Test(string)。Execute 方法的语法包括以下几个部分：object 必需的，总是一个 RegExp 对象的名称；string 必需的，要执行正则表达式搜索的文本字符串。正则表达式搜索的实际模式是通过RegExp对象的Pattern属性来设置的。RegExp.Global属性对Test方法没有影响。如果找到了匹配的模式，Test方法返回True；否则返回False。<br />比如，我们要在将一段文本中所有fox或Fox字符串替换成cat,其示例代码如下:<br />&nbsp; Dim regEx, str1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' 建立变量。<br />&nbsp; str1 = &quot;The quick brown fox jumped over the lazy dog.&quot;<br />&nbsp; Set regEx = New RegExp&nbsp;&nbsp;&nbsp;&nbsp;' 建立正则表达式。<br />&nbsp; regEx.Pattern = &quot;fox&quot;&nbsp;&nbsp;&nbsp;' 设置模式。<br />&nbsp; regEx.IgnoreCase = True&nbsp;&nbsp;&nbsp;&nbsp;' 设置是否区分大小写。<br />&nbsp; ReplaceTest = regEx.Replace(str1, replStr)&nbsp;'&nbsp; 作替换。<br />在本系统中，假设Body变量为用户保存的贴子内容，其中包含有UBB标签文本，我们要将其转换成用户浏览器可以识别的格式，比如，飞行文字的UBB代码文本为&ldquo;[fly]轻舞飞扬[/fly]&rdquo;，其转换示例代码如下：<br />&nbsp; dim re<br />&nbsp; Set re=new RegExp<br />&nbsp; re.IgnoreCase =True<br />&nbsp; re.Global=True <br />&nbsp; re.Pattern=&quot;\[fly\](.[^\[]*]\[\/fly\]&quot;<br />&nbsp; body=re.Replace(body,&quot;&lt;marquee width=90% behavior=alternate scrollamount=3&gt;$1&lt;/marquee&gt;&quot;)<br />我们可以照此方法，实现对另外的UBB标签的正确转换，转换的关键是构造出正确的正则表达式。在本系统中，系统支持的所有UBB标签转换正则表达式全部包括在ubb.asp文件中的code_jk函数中。<br />&nbsp;</p>]]></description><category>基于Web的通用BBS系统的建立与维护(ASP)</category><comments>http://www.verykk.com/post/441.html#comment</comments><wfw:comment>http://www.verykk.com/</wfw:comment><wfw:commentRss>http://www.verykk.com/feed.asp?cmt=441</wfw:commentRss><trackback:ping>http://www.verykk.com/cmd.asp?act=tb&amp;id=441&amp;key=29a39635</trackback:ping></item><item><title>超文本信息的输入</title><author>a@b.com (adminnyee)</author><link>http://www.verykk.com/post/440.html</link><pubDate>Fri, 09 Jul 2010 20:25:54 +0800</pubDate><guid>http://www.verykk.com/post/440.html</guid><description><![CDATA[<p>用户在书写贴子内容时，可以输入这类带格式文本，例如，用户希望输入一段红色文字&ldquo;警告：SARS有可能卷土重来！&rdquo;，则应照这种格式输入文本&ldquo;[color=&rsquo;red&rsquo;]警告：SARS有可能卷土重来[/color]&rdquo;。系统在用户输入贴子界面应提供UBB使用帮助链接，对于一些常用的UBB标签，系统应提供其快捷输入方式。例如，界面提供一个输入飞行文字UBB标签快捷按钮，用户单击此按钮，系统则弹出一个文本输入框，用户在其中输入文字，完成提交后，系统将自动在贴子内容输入滚动文本框内文字的末尾添加带有飞行文本标签的这段文字。其实现代码如下（采用JavaScript编写）：<br />&hellip;&hellip;<br />&lt;title&gt;&hellip;&hellip;&lt;/title&gt;<br />&lt;SCRIPT language=&quot;JavaScript&quot;&gt;<br />&hellip;&hellip;<br />function fontchuli(){<br />if ((document.selection)&amp;&amp;(document.selection.type == &quot;Text&quot;)) {<br />var range = document.selection.createRange();<br />var ch_text=range.text;<br />range.text = fontbegin + ch_text + fontend;<br />} <br />else {<br />document.kbbs.body.value=fontbegin+document.kbbs.body.value+fontend;<br />document.kbbs.body.focus();<br />}<br />}<br />function fly() {<br />fontbegin=&quot;[fly]&quot;;<br />fontend=&quot;[/fly]&quot;;<br />fontchuli();<br />}<br />&hellip;&hellip;<br />&lt;/SCRIPT&gt;<br />&hellip;&hellip;<br />&lt;form method=&quot;?&quot; action=&quot;?&quot; name=&quot;kbbs&quot;&gt;<br />&hellip;&hellip;<br />功能按钮：&lt;IMG onclick=fly() alt=飞行字 src=&quot;pic/fly.gif&quot; border=0&gt;<br />&hellip;&hellip;<br />&lt;/form&gt;&nbsp; <br />文本在提交后，系统在保存此贴子之前，应该将提交的贴子的标题、贴子内容作适当的转换，比如，用户输入的&lsquo;&lt;&rsquo;以及&lsquo;&gt;&rsquo;等字符，应该转换成HTML非保留字符。我们采用Server对象的HTMLEncode方法。<br />HTML用一些特殊的字符（比如&lsquo;&lt;&rsquo;和&lsquo;&gt;&rsquo;）来定义HTML元素。这些字符叫做&ldquo;保留字符&rdquo;。如果想要在一个Web页中将它们作为普通的文本字符串来使用，HTML会将它们解释成HTML编码，这就违背了使用者的原意。HTMLEncode方法的作用就是将文本字符串中的保留字符转换成特殊字符，使其能够正确地显示出来，而且不被当作HTML编码的一部分来解释。经过编码，文本中的&lsquo;&lt;&rsquo;和&lsquo;&gt;&rsquo;分别被&lsquo;&amp;lt&rsquo;以及&lsquo;&amp;gt&rsquo;所取代。<br />假设贴子的标题以及内容分别被存放在title以及body这两个变量里，转换代码如下：<br />&hellip;&hellip;<br />title=Server.HTMLEncode(title)<br />body=Server.HTMLEncode(body)<br />&nbsp;</p>]]></description><category>基于Web的通用BBS系统的建立与维护(ASP)</category><comments>http://www.verykk.com/post/440.html#comment</comments><wfw:comment>http://www.verykk.com/</wfw:comment><wfw:commentRss>http://www.verykk.com/feed.asp?cmt=440</wfw:commentRss><trackback:ping>http://www.verykk.com/cmd.asp?act=tb&amp;id=440&amp;key=3c8038dd</trackback:ping></item><item><title>在贴子中实现超文本信息输入和显示</title><author>a@b.com (adminnyee)</author><link>http://www.verykk.com/post/436.html</link><pubDate>Thu, 08 Jul 2010 20:25:04 +0800</pubDate><guid>http://www.verykk.com/post/436.html</guid><description><![CDATA[<p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">论坛可以由管理员设置是否支持<span lang="EN-US">UBB</span>标签，<span lang="EN-US">UBB</span>标签就是不允许使用<span lang="EN-US">HTML</span>语法的情况下，通过论坛的特殊转换程序，以至可以支持少量常用的、无危害性的<span lang="EN-US">HTML</span>效果显示。而对于那类带有恶意代码的文本予以屏蔽。下面为本系统支持的<span lang="EN-US">UBB</span>具体使用说明：<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体"><b></span><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">文字<span lang="EN-US"></b></span>：在文字的位置可以任意加入您需要的字符，显示为粗体效果明。<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体"><i></span><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">文字<span lang="EN-US"></i></span>：在文字的位置可以任意加入您需要的字符，显示为斜体效果。<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体"><u></span><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">文字<span lang="EN-US"></u></span>：在文字的位置可以任意加入您需要的字符，显示为下划线效果。<span lang="EN-US"> <o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体"><a href="HTTP://WWW.my0661.NET" target="_blank">HTTP://WWW.my0661.NET</a> <o:p></o:p></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体"><a href="mailto:my0661@my0661.net" >my0661@my0661.net</a> <o:p></o:p></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">[img][/img]</span><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">：在标签的中间插入图片地址可以实现插图效果。<span lang="EN-US"> <o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">[flash]Flash</span><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">连接地址<span lang="EN-US">[/Flash]</span>：在标签的中间插入<span lang="EN-US">Flash</span>图片地址可以实现插入<span lang="EN-US">Flash</span>。<span lang="EN-US"> <o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体"><textarea class="code" rows="10" cols="50">&lt;/span&gt;&lt;span&nbsp;style="font-size:&nbsp;14pt;&nbsp;font-family:&nbsp;仿宋_GB2312;&nbsp;mso-bidi-font-size:&nbsp;10.5pt;&nbsp;mso-hansi-font-family:&nbsp;宋体"&gt;文字&lt;span&nbsp;lang="EN-US"&gt;</textarea></span>：在标签中写入文字可实现<span lang="EN-US">html</span>中编号效果。<span lang="EN-US"> <o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体"><blockquote><div class="quote"></span><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">引用<span lang="EN-US"></div></blockquote></span>：在标签的中间插入文字可以实现<span lang="EN-US">HTMl</span>中引用文字效果。<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">[list]</span><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">文字<span lang="EN-US">[/list] [list=a]</span>文字<span lang="EN-US">[/list] [list=1]</span>文字<span lang="EN-US">[/list]</span>：更改<span lang="EN-US">list</span>属性标签，实现<span lang="EN-US">HTML</span>目录效果。<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">[fly]</span><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">文字<span lang="EN-US">[/fly]</span>：在标签的中间插入文字可以实现文字飞翔效果，类似跑马灯。<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">[move]</span><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">文字<span lang="EN-US">[/move]</span>：在标签的中间插入文字可以实现文字移动效果，为来回飘动。<span lang="EN-US"> <o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">[color=</span><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">颜色代码<span lang="EN-US">]</span>文字<span lang="EN-US">[/color]</span>：输入您的颜色代码，在标签的中间插入文字可以实现文字颜色改变。<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">[size=</span><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">数字<span lang="EN-US">]</span>文字<span lang="EN-US">[/size]</span>：输入您的字体大小，在标签的中间插入文字可以实现文字大小改变。<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">[face=</span><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">字体<span lang="EN-US">]</span>文字<span lang="EN-US">[/face]</span>：输入您需要的字体，在标签的中间插入文字可以实现文字字体转换。<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">[DIR=500,350]http://[/DIR]</span><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">：为插入<span lang="EN-US">shockwave</span>格式文件，中间的数字为宽度和长度<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">[RM=500,350]http://[/RM]</span><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">：为插入<span lang="EN-US">realplayer</span>格式的<span lang="EN-US">rm</span>文件，中间的数字为宽度和长度<span lang="EN-US"> <o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">[MP=500,350]http://[/MP]</span><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">：为插入为<span lang="EN-US">midia player</span>格式的文件，中间的数字为宽度和长度<span lang="EN-US"> <o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">[QT=500,350]http://[/QT]</span><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">：为插入为<span lang="EN-US">Quick time</span>格式的文件，中间的数字为宽度和长度<span lang="EN-US"> <o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体"><a href="HTTP://WWW.my0661.NET" target="_blank"></span><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">潮阳网络<span lang="EN-US"></a></span>：有两种方法可以加入超级连接，可以连接具体地址或者文字连接。<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">[align=center]</span><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">文字<span lang="EN-US">[/align]</span>：在文字的位置可以任意加入您需要的字符，<span lang="EN-US">center</span>位置<span lang="EN-US">center</span>表示居中，<span lang="EN-US">left</span>表示居左，<span lang="EN-US">right</span>表示居右。<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体"><a href="mailto:MAILTO:my0661@my0661.net">feng</a></span><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">：有两种方法可以加入邮件连接，可以连接具体地址或者文字连接。<span lang="EN-US"><o:p></o:p></span></span></p><p class="MsoPlainText" style="margin: 0cm 0cm 0pt; text-indent: 28pt; mso-char-indent-count: 2.0"><span lang="EN-US" style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">[glow=255,red,2]</span><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 10.5pt; mso-hansi-font-family: 宋体">文字<span lang="EN-US">[/glow]:</span>在标签的中间插入文字可以实现文字发光特效<span lang="EN-US">,glow</span>内属性依次为宽度、颜色和边界大小。<span lang="EN-US"> <o:p></o:p></span></span></p><p><span lang="EN-US" style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 12.0pt; mso-hansi-font-family: 宋体; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">[shadow=255,red,2]</span><span style="font-size: 14pt; font-family: 仿宋_GB2312; mso-bidi-font-size: 12.0pt; mso-hansi-font-family: 宋体; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">文字<span lang="EN-US">[/shadow]:</span>在标签的中间插入文字可以实现文字阴影特效，<span lang="EN-US">shadow</span>内属性依次为宽度、颜色和边界大小</span></p>]]></description><category>基于Web的通用BBS系统的建立与维护(ASP)</category><comments>http://www.verykk.com/post/436.html#comment</comments><wfw:comment>http://www.verykk.com/</wfw:comment><wfw:commentRss>http://www.verykk.com/feed.asp?cmt=436</wfw:commentRss><trackback:ping>http://www.verykk.com/cmd.asp?act=tb&amp;id=436&amp;key=61f1a053</trackback:ping></item><item><title>ASP网页安全性的实现方法</title><author>a@b.com (adminnyee)</author><link>http://www.verykk.com/post/435.html</link><pubDate>Thu, 08 Jul 2010 20:23:53 +0800</pubDate><guid>http://www.verykk.com/post/435.html</guid><description><![CDATA[<p>我们知道在用浏览器浏览HTML网页时，浏览器会将HTML文件原封不动地全部下载下来，然后再由浏览器解释执行，因而很容易就能看到HTML文件的全部源代码，这对于那些含有保密内容的网页来说是十分不安全的。为了提高网页的安全性，我们采用了ASP网页，前面说过，ASP网页是一种动态网页，它是由服务器中的ASP程序运行产生的动态页面，而ASP的源代码又是全部保存在服务器上的，所以从客户端的角度，ASP源代码是保密的。所以，我们可以利用ASP网页ASP源代码的保密性来实现ASP网页只能被具有相应权限的合法用户访问。<br />本BBS论坛系统有会员身份权限限制的功能网页相当多，频繁地要求用户输入用户名以及密码，然后比较数据库中会员注册表数据以确认用户身份，再根据用户的身份来确定是否具有本网页的访问权，将会消耗大量的服务器资源，极大地增加Web服务器的负担。此时，我们可以利用ASP的内置对象Session。<br />当一位尚未建立Session对象的用户浏览到WEB站点的ASP程序时，ASP就会自动产生一个新的Session对象，并且指定唯一的SessionID编号。此后，在浏览此ASP程序和即将在站点内浏览其它ASP程序的过程，我们称为一个Session期间。WEB服务器可以凭借读取ASP程序时传送的SessionID判断用户是否仍在Session期间，直到Session对象TimeOut属性所设置的时间，默认为20分钟或执行Abandon方法。每当读取新的ASP程序后，TimeOut属性都会归零，重新计算，所以除非没有浏览站点，否则Session期间绝对超过20分钟。<br />每一位用户都可以拥有一组专用的Session变量。虽然每位用户的Session变量名称相同，但是其内容可就不同，而且只有该用户拥有权利读写自已的Session变量，我们可以利用Session的这个特性来实现ASP网页的安全保护。<br />在本系统设计了一个ASP网页userlog.asp，如果用户想以普通会员的身份发表贴子，或以版主身份管理版面，或以超级管理员身份进行论坛管理，则用户在进入系统之前必须通过userlogin.asp进行登录，login.asp会将用户输入的用户名及密码拿来与数据库中的资料相对比，以确定用户的合适身份，否则，用户只能以匿名用户身份浏览本论坛贴子，却不能发表贴子或回复贴子，当然更不能进行论坛的相关管理操作了。用户的身份将被写入Session对象的username以及adminboard变量，username保存其会员名称，adminboard保存其操作权限，为&ldquo;0&rdquo;则其为超级会员，为空则为普能会员，为版面ID则为版主。<br />userlog.asp源代码如下：<br />&lt;!--#include file=&quot;dbconrw.asp&quot;--&gt;<br />&lt;%<br />response.expires=0<br />On Error Resume Next<br />Dim strUserName<br />Dim strSQL,objRS<br />strUserName=Request.Form(&quot;username&quot;)<br />strUserPassword=Request.Form(&quot;password&quot;)<br />strSQL=&quot;SELECT * FROM userlist WHERE username='&quot; &amp; strUserName &amp; &quot;'&quot;<br />set objRS=objDBConn.Execute(strSQL)<br />session(&quot;username&quot;)=&quot;&quot;<br />session(&quot;adminboard&quot;)=&quot;&quot;<br />Dim bLogSucc,repmsg,reptxt,repurl<br />If objRS.EOF Then<br />'User Doesn't Exists<br />&nbsp;&nbsp; bLogSucc=0<br />&nbsp;&nbsp; repmsg=&quot;此用户不存在&quot;<br />&nbsp;&nbsp; repurl=&quot;userlog.asp&quot;&nbsp; <br />&nbsp;&nbsp; reptxt=&quot;请重新登录&quot;<br />Else<br />'User Exists<br />&nbsp; If objRS(&quot;password&quot;)=strUserPassword Then<br />&nbsp;&nbsp;&nbsp;&nbsp; bLogSucc=1<br />&nbsp;&nbsp;&nbsp;&nbsp; session(&quot;username&quot;)=strUserName<br />&nbsp;&nbsp;&nbsp;&nbsp; repmsg=&quot;欢迎&quot; &amp; strUserName &amp; &quot;，您已登录成功&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp; repurl=&quot;main.asp&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp; reptxt=&quot;返回论坛首页&quot;<br />&nbsp; Else <br />&nbsp;&nbsp; bLogSucc=0<br />&nbsp;&nbsp; repmsg=&quot;密码输入错误&quot;<br />&nbsp;&nbsp; repurl=&quot;userlog.asp&quot;<br />&nbsp;&nbsp; reptxt=&quot;请重新登录&quot;<br />&nbsp; End if<br />End If<br />%&gt;<br />&lt;!--#include file=&quot;dberror.asp&quot;--&gt;<br />&lt;%<br />objRS.Close<br />'Judge if super administrator or board manager<br />if bLogSucc=1 then<br />&nbsp;&nbsp; strSQL=&quot;SELECT * FROM adminorlist WHERE username='&quot; &amp; strUsername &amp; &quot;'&quot;<br />&nbsp;&nbsp; set objRS=objDBConn.Execute(strSQL)<br />&nbsp;&nbsp; if err.number&lt;&gt;0 then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.write &quot;数据库操作失败：&quot;&amp;err.description<br />&nbsp;&nbsp; end if<br />&nbsp;&nbsp; If Not objRS.EOF Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if objRS(&quot;status&quot;)=&quot;Y&quot; then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session(&quot;adminboard&quot;)=Cint(objRS(&quot;manbid&quot;))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if<br />&nbsp;&nbsp; end if<br />'Write Log<br />&nbsp;&nbsp; objRS.close<br />&nbsp;&nbsp; strSQL=&quot;INSERT INTO loginfo(userid,userip,intime)&quot;<br />&nbsp;&nbsp; strSQL=strSQL &amp; &quot;VALUES('&quot; &amp; strUserName &amp; &quot;','&quot;<br />&nbsp;&nbsp; strSQL=strSQL &amp; request.servervariables(&quot;remote_host&quot;) &amp; &quot;','&quot;<br />&nbsp;&nbsp; strSQL=strSQL &amp; now() &amp; &quot;')&quot;<br />&nbsp;&nbsp; set objRS=objDBConn.execute(strSQL)<br />&nbsp;&nbsp; if err.number&lt;&gt;0 then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.write &quot;数据库操作失败：&quot;&amp;err.description<br />&nbsp;&nbsp; end if<br />end if<br />objRS.close<br />objDBConn.Close<br />Set objRS=Nothing<br />Set objDBConn=Nothing<br />%&gt;<br />&lt;html&gt;&lt;body&gt;<br />&lt;table align='center'&gt;<br />&lt;tr&gt;&lt;td align='center'&gt;&lt;%=repmsg%&gt;&lt;/td&gt;&lt;/tr&gt;<br />&lt;tr&gt;&lt;td align='center'&gt;<br />&lt;font color=&quot;#336699&quot;&gt;<br />&lt;a id=&quot;reinput&quot; href=&quot;&lt;%=repurl%&gt;&quot;&gt;&lt;%=reptxt%&gt;&lt;/a&gt;&lt;/font&gt;<br />&lt;SCRIPT language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;<br />setTimeout(&quot;location.href = reinput.href&quot;,1000);<br />&lt;/SCRIPT&gt;<br />&lt;/td&gt;&lt;/tr&gt;<br />&lt;/table&gt;<br />&lt;/body&gt;&lt;/html&gt;<br />确定了用户的会员身份以后，在每个需要进行身份识别的ASP网页插入身份识别代码，如果此用户具有访问这个ASP网页的权限，则输出其相应的HTML文件，否则，系统转到用户登录网页要求用户重新登录以取得访问此ASP功能网页的合法身份。例如，论坛基本信息设置ASP网页需要访问者具有超级会员身份，在本网页前必须插入以下一段代码：<br />&lt;%<br />'Check the Super Administrator Right<br />Response.Expires=0<br />if Session(&quot;adminboard&quot;) &lt;&gt; &quot;0&quot; Then<br />&nbsp;&nbsp; Response.redirect &quot;userlog.asp?errmsg=您没有超级用户管理权限，请重新登录或退出!&quot; <br />End If<br />%&gt;</p><p>&nbsp;</p>]]></description><category>基于Web的通用BBS系统的建立与维护(ASP)</category><comments>http://www.verykk.com/post/435.html#comment</comments><wfw:comment>http://www.verykk.com/</wfw:comment><wfw:commentRss>http://www.verykk.com/feed.asp?cmt=435</wfw:commentRss><trackback:ping>http://www.verykk.com/cmd.asp?act=tb&amp;id=435&amp;key=0b3e4912</trackback:ping></item><item><title>ASP网页数据库的操作</title><author>a@b.com (adminnyee)</author><link>http://www.verykk.com/post/434.html</link><pubDate>Thu, 08 Jul 2010 20:23:07 +0800</pubDate><guid>http://www.verykk.com/post/434.html</guid><description><![CDATA[<p>关于网页数据库的操作，ASP拥有三种方法：ADO组件的Connection对象配合SQL语法；ADO组件的Command对象执行SQL语法；使用ADO组件的RecordSet。每种方法各有特点。<br />1、ADO组件Connection对象配合SQL语法<br />在网页上使用SQL指令处理数据的访问，需要使用ADO组件的Connection对象建立数据连接，以便让我们下达SQL指令到服务器端的数据库，处理表中的记录。参照3.2.3.1ASP网页数据库的连接所介绍的方法，首先建立一个Connection对象；然后再打开DSN-less，同时，根据将要进行数据操作的类型，设置其Mode属性；最后，使用Connection对象的Execute方法下达SQL指令，通常在使用Execute方法执行SQL指令前，应该指定其CommandTimeOut属性。以会员注册为例，用户填写完注册资料以后，提交系统，系统进行用户资料插入操作：<br />&lt;%<br />&rsquo;读取用户提交的资料至各变量<br />strSQL=&quot;INSERT INTO userlist(username,password,question,answer, &quot;<br />strSQL= strSQL &amp; &quot;email,realname,sex,zjname,zjnumber, &quot;<br />strSQL= strSQL &amp; &quot;lxway,birthday,homepage,quantity)&quot;<br />strSQL=strSQL &amp; &quot;VALUES('&quot;<br />strSQL=strSQL &amp; strUsername &amp; &quot;','&quot;<br />strSQL=strSQL &amp; strPassword &amp; &quot;','&quot;<br />strSQL=strSQL &amp; strQuestion &amp; &quot;','&quot;<br />strSQL=strSQL &amp; strAnswer &amp; &quot;','&quot;<br />strSQL=strSQL &amp; strEmail &amp; &quot;','&quot;<br />strSQL=strSQL &amp; strRealname &amp; &quot;','&quot;<br />strSQL=strSQL &amp; strSex &amp; &quot;','&quot;<br />strSQL=strSQL &amp; strZjname &amp; &quot;','&quot;<br />strSQL=strSQL &amp; strZjnumber &amp; &quot;','&quot;<br />strSQL=strSQL &amp; strLxway &amp; &quot;','&quot;<br />strSQL=strSQL &amp; strBirthday &amp; &quot;','&quot;<br />strSQL=strSQL &amp; strHomepage &amp; &quot;','&quot;<br />strSQL=strSQL &amp; strQuantity &amp; &quot;')&quot;<br />%&gt;<br />&lt;!---#include file=&quot;dbconrw.asp&quot;---&gt;<br />&lt;%<br />objDBConn.Execute strSQL<br />%&gt;<br />&lt;!---#include file=&quot;dberror.asp&quot;---&gt;<br />这是最基本的数据库操作方式，特别是对于表的插入、删除和更新记录以及单条数据的查询操作，是三种方式中最为简单有效的一种。本系统中，用户身份验证、发表贴子以及回复贴子等相关数据库操作相当频繁，对数据存取效率有相当的要求，至于在数据存取的灵活性方面要求不高，因此，大部分都是采取ADO组件Connection对象配合SQL语法这种数据库操作方式。<br />2、ADO组件的Command对象执行SQL语法<br />Command对象和Connection对象的Execute方法一样能够执行SQL指令。在建立Command对象前一样需要建立和打开数据连接，假设活动连接objDBConn已经建立好，其后步骤如下所示：<br />Step1:建立Command对象，其程序代码如下：<br />Set objDBCommand=Sever.CreateObject(&ldquo;ADODB.Command&rdquo;)<br />Step2:接着指定ActiveConnection属性为目前打开的数据连接，代码如下：<br />ObjDBCommand.AvtiveConnection=objDBConn<br />Step3:指定CommandText属性为要执行的SQL指令，程序代码如下：<br />ObjDBCommand.CommandText=&ldquo;Select * from userlist&rdquo;<br />Step4:使用Execute方法执行SQL指令，objRS就是取得的记录集合，代码如下：<br />Set objRS=objDBCommand.Execute<br />上述步骤可以取得所有注册会员的详细注册资料，至于添加、删除和更新记录只需下达不同的SQL指令。需要注意的是，Command对象并不支持Close方法，所以关闭Command对象，只需设为Nothing即可。<br />建立复杂的SQL语句，通常得事先进行许多复杂的数据类型转换，使用Command对象配合Parameters数据集合建立SQL指令则相对来说比较简单，因为对象本身就能够自已处理复杂的数据类型转换，另外，比较Connection对象直接执行SQL语句来说，操作要灵活。<br />Command对象主要的目的是用在存储程序（Store Procedure），简单地说，存储程序是一些默认的处理程序。这个部分需用要数据源本身拥有指令处理的能力，象MS SQL Server就支持存储程序，但MS Access这类中小型数据库系统就不支持存储程序。<br />应该说，使用存储程序来操作数据库，具有较其它方式较明显的优点，首先，数据存取效率最高，因为存储过程经过了优化和编译，并且在第一次执行以后，就驻留在缓存中，另外，用户不必在<a href="http://www.verykk.com/catalog.asp?cate=3" target="_blank">网络</a>上发送有时数以百计的SQL语句，只需通过执行一个简单的存储过程，就能够完成复杂的操作，减少了客户和DB服务器间传递的请求数目，减少了<a href="http://www.verykk.com/catalog.asp?cate=3" target="_blank">网络</a>通信量。<br />本系统采用MS Access数据库，所以本方法作为未来系统扩展升级时数据库操作的首选方法。<br />3、使用ADO组件的RecordSet<br />RecordSet对象为ADO组件最重要的对象，从英文名字看来就是&ldquo;记录集合&rdquo;。它将表全部或部分的记录内容，象使用容器一样暂放所需的记录，RecordSet对象能够显示表的内容或进行记录数据的分析处理。<br />数据的目的是在访问、建立和处理记录，表的内容是由记录所组成。当我们在表中查询所需的数据时，其实就是在表的记录间寻找，RecordSet对象的记录集合可以把所需的记录取出，使用表格的方式，每一行就是一条记录，提供ASP程序一致的数据处理方式。<br />数据本身其实就是一个虚拟的表格，为什么一定要将它取出放入RecordSet对象容器，然后再进行处理呢？这是因为ADO组件数据源不见得就是数据库表，它可能是一个文本文件，而且所需的数据可能只有几笔，并不需要打开整个表提供全部的记录。直接在表中处理并没有效率，不如在RecordSet记录集合处理后，再更新表的记录，反而较有效率。<br />总之，不论数据源到底是什么，通过RecordSet对象的记录集合，就可以在ASP程序使用一致的方法处理数据，不论是文本文件、Excel还是数据库，它都是一个表格的记录集合。<br />在使用ADO组件的RecordSet对象时，因为处理的对象是记录集合，不是表的记录本身，所以，如果记录改变了，一定在用Update方法更新表，才能真正修改表的记录内容。<br />在数据的查询方面，RecordSet对象的使用相当灵活，虽然RecordSet对象一样可以插入、更新和删除记录，此时直接使用SQL指令反而较有效率。例如：只是插入一条记录，为什么需要建立RecordSet对象的记录集合，然后再更新记录？这在实际操作时，反而多此一举。但是，如果是从表中提取记录集合，然后要对记录进行相对较为复杂的分组分页显示，则使用RecordSet对象来操作数据比起SQL方式来要简单得多。本系统中象会员列表查询或是版主列表查询都采用ADO组件的RecordSet数据操作方式。<br />&nbsp;</p>]]></description><category>基于Web的通用BBS系统的建立与维护(ASP)</category><comments>http://www.verykk.com/post/434.html#comment</comments><wfw:comment>http://www.verykk.com/</wfw:comment><wfw:commentRss>http://www.verykk.com/feed.asp?cmt=434</wfw:commentRss><trackback:ping>http://www.verykk.com/cmd.asp?act=tb&amp;id=434&amp;key=980a5082</trackback:ping></item><item><title>ASP网页数据库的连接</title><author>a@b.com (adminnyee)</author><link>http://www.verykk.com/post/433.html</link><pubDate>Thu, 08 Jul 2010 20:22:15 +0800</pubDate><guid>http://www.verykk.com/post/433.html</guid><description><![CDATA[<p>网页数据库的连接方法有两种，一种是DSN数据源，另一种是DSN-less方式，即不建立DSN连接数据。我们考虑最简单的BBS系统应用环境，使用互联网上免费资源，通常互联网上免费主页空间只支持简单的ASP应用以及Access数据库应用，Access数据库通常要求放置在固定的虚拟目录位置，譬如：[\db]目录位置，数据库的连接也只支持DSN-less方式，这也是自然的，既然是免费资源，总不能要求人家还特别帮你设置一个DSN数据源。另外，BBS通常只作为Web应用的一部分，或者说作为你个人主页或商业<a href="http://www.verykk.com/post/160.html" target="_blank">网站</a>提供的一个附加功能，这个时候，你的BBS论坛系统通常都安装在主页空间一个单独的目录下，我们假定为[\BSS]。<br />所有要进行数据库存取的ASP网页都要以DSN-less方式进行数据库连接，由此我们可以将执行数据库连接的ASP代码单独形成一个插入文件，通常插入文件都是以[.inc]作为扩展名，考虑到安全性的需要，防止用户直接输入文件名下载此插入文件，所以我们仍然以[.asp]作为插入文件的扩展名，比如，我们将一个用作数据读操作的数据库连接插入文件名命名为[dbconr.asp]，下面就是其典型代码：<br />&lt;%<br />'adModeUnknown 0 default<br />'adModeRead 1<br />'adModeWrite 2<br />'adModeReadWrite 3<br />'adModeShareDenyRead 4<br />'adModeShareDenyWrite 8<br />'adModeShareExclusive 12<br />'adModeShareDenyNone 16</p><p>strDBPath = Server.MapPath(&quot;dbconr.asp&quot;)<br />strDBPath = replace(strDBPath,&quot;\bbs\dbconr.asp&quot;,&quot;\db\bbsdata.mdb&quot;)<br />strDBConn= &quot;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=&quot; &amp; strDBPath<br />Set objDBConn=server.createobject(&quot;adodb.connection&quot;)<br />objDBConn.ConnectionTimeOut=20<br />objDBConn.Mode=1 &lsquo;读模式<br />objDBConn.open strDBConn<br />%&gt;<br />注意，其中的objDBConn.Mode既为我们所做的数据库连接将用于操作的模式是读、写、或是读写。至于为什么需要设置Mode属性？设置Mode属性可以节省ADO组件的处理时间。另外，数据用户的权限管理十分重要，设置Mode属性能够有效率地规划整个Web应用程序的用户权限。所以，从安全性和代码执行效率方面考虑，我们将读与写数据库连接插入文件分别开来，分别命名为[dbconr.asp]和[dbconrw.asp]。<br />数据库连接操作是一个相当频繁的操作，我们可以采用适当的技术来进行数据库连接优化，以提高数据库连接性能。在ASP的数据库编程中，connection对象是我们不可能离开的一个对象，在对数据库进行任何的操作，比如更新记录，插入，删除，检索等，都必须借助于connection对象来完成。形象地来说，connection对象就是程序与数据库沟通的管道，所有对数据库的操作，都必须经过它，因此，无论我们以何种方式连接数据库前，总是少不了执行下列的代码。<br />Set objDBConn=Server.CreateObject(&quot;ADODB.Connection&quot;)<br />建立一个connection对象的实例变量，然后才能在它的基础上建立recordset对象或是command对象来操作数据库。既然connection对象是如此的重要，那么如何优化和管理好connection对象对数据库程序来说是极其重要的，它关系到程序的性能。<br />每当一个客户执行数据库操作时，就需要借助一个connection对象，而每个connection对象就会占用服务器的一部分资源，而数据库的同时连接数不可能是无限的，因此。在考滤要提供高性能的数据库Web程序时，我们需要考虑如何去减少服务器的开销。一般来说。每个ASP页面中建立一个connection对象，都会在服务器中产生一个对数据库的连接。而不同的页面的connection对象是不能共享的。那么。我们可不可以使同一个用户所访问的不同页面共享一个connection连接通道呢。<br />我们来回顾一下ASP六大内置对象的session对象，它可以为某个特定的用户来保存私有的数据，如果我们把connection对象保存在session对象中，是否可以使不同的ASP页面都使用同一个连接通道呢？看看下面的这段程序。<br />&lt;%<br />Set objDBConn=Server.CreateObject(&quot;ADODB.Connection&quot;)<br />objDBConn.Mode=?<br />objDBConn.Open&quot;[DSN-less串]&quot;<br />session(&quot;dbconn&quot;)=objDBConn<br />Set rs=Server.CreateObject(&quot;ADODB.Recordset&quot;)<br />Commandtext = &quot;select * from userlist&quot;<br />connstr=session(&quot;dbconn&quot;)<br />rs.open Commandtext , connstr , 3 , 2<br />%&gt;<br />在这个数据库连接中。我们使用了session对象，首先，建立一个objDBConn的连接对象，然后连接到数据表userlist中，取得连接句柄后，把它保存在session(&quot;dbconn&quot;)这个session变量中，在打开记录集前，从session(&quot;dbconn&quot;)中取出句柄，借助于session对象。我们可以使不同的ASP页面共用一个连接对象，减少了对服务器内存的开销，而我们也不需要担心，当一个客户因为错误操作导致服务器不能释放该被占用的session连接对象，因为我们知道每个客户的session对象是有一定的生存期限的，过了这个期限，服务器就会自动把它释放掉。<br />然而，数据库连接性能的提高是以一定的服务器资源消耗为代价的，所以，我们就要在其中权衡利弊。通常，利用别人的主机空间来作为自已BBS系统的平台，就应该尽谅避免使用过多的服务器资源，诸如APPLICATION以及SESSION变量，反之，主机资源丰富，而应用系统相对较少，则可以考虑采用上述优化方式。<br />&nbsp;</p>]]></description><category>基于Web的通用BBS系统的建立与维护(ASP)</category><comments>http://www.verykk.com/post/433.html#comment</comments><wfw:comment>http://www.verykk.com/</wfw:comment><wfw:commentRss>http://www.verykk.com/feed.asp?cmt=433</wfw:commentRss><trackback:ping>http://www.verykk.com/cmd.asp?act=tb&amp;id=433&amp;key=58272094</trackback:ping></item><item><title>正则表达式技术</title><author>a@b.com (adminnyee)</author><link>http://www.verykk.com/post/432.html</link><pubDate>Thu, 08 Jul 2010 20:21:08 +0800</pubDate><guid>http://www.verykk.com/post/432.html</guid><description><![CDATA[<p>正则表达式（Regular Expression）最早是由数学家Stephen Kleene于1956年提出，他是在对自然语言的递增研究成果的基础上提出来的。具有完整语法的正则表达式使用在字符的格式匹配方面上，后来被应用到熔融信息技术领域。自从那时起，正则表达式经过几个时期的发展，现在的标准已经被ISO(国际标准组织)批准和被Open Group组织认定。<br />正则表达式并非一门专用语言，但它可用于在一个文件或字符里查找和替代文本的一种标准。它具有两种标准：基本的正则表达式(BRE)，扩展的正则表达式(ERE)。ERE包括BRE功能和另外其它的概念。<br />许多程序中都使用了正则表达式，包括xsh,egrep,sed,vi以及在UNIX平台下的程序。它们可以被很多语言采纳，如HTML 、XML、JavaScript以及VBScript等等，这些采纳通常只是整个标准的一个子集。<br />很多正则表达式的语法看起来很相似，这是因为你以前你没有研究过它们。通配符是RE的一个结构类型，即重复操作。让我们先看一看ERE标准的最通用的基本语法类型。我们以VBScript为例，说明正则表达式的应用范畴及其构造方法。<br />构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与操作符将小的表达式结合在一起来创建更大的表达式。<br />可以通过在一对分隔符之间放入表达式模式的各种组件来构造一个正则表达式。对 VBScript 而言，则采用一对引号 (&quot;&quot;) 来确定正则表达式的边界。例如：&quot;expression&quot;。正则表达式模式 (expression) 存储在RegExp 对象的Pattern 属性中。<br />*字符匹配<br />正则表达式的关键之处在于确定你要搜索匹配的东西，如果没有这一概念，Res将毫无用处。<br />每一个表达式都包含需要查找的指令，如下所示：<br />&quot;.ord&quot;-匹配象&quot;ford&quot;, &quot;lord&quot;, &quot;2ord&quot;等等之类的文本；<br />&quot;[cng]ord&quot;-只匹配&quot;cord&quot;, &quot;nord&quot;, 以及 &quot;gord&quot;的文本；<br />&quot;[^cn]ord&quot;-匹配开头字母不包括c以及n，后面字符串为ord的文本；<br />&quot;[a-zA-Z]ord&quot;-匹配开头字母为英文字母，后面字符串为ord的文本； <br />&quot;[^0-9]&quot;-匹配开头字母不包括数字，后面字符串为ord的文本。<br />*重复操作符<br />重复操作符，或数量词，都描述了查找一个特定字符的次数。它们常被用于字符匹配语法以查找多行的字符，参见下面例子：<br />&quot;?erd&quot; Will match &quot;berd&quot;, &quot;herd&quot;, etc. and &quot;erd&quot;<br />&quot;n.*rd&quot; Will match &quot;nerd&quot;, &quot;nrd&quot;, &quot;neard&quot;, etc.<br />&quot;[n]+erd&quot; Will match &quot;nerd&quot;, &quot;nnerd&quot;, etc., but not &quot;erd&quot;<br />&quot;[a-z]{2}erd&quot; Will match &quot;cherd&quot;, &quot;blerd&quot;, etc. but not &quot;nerd&quot;, &quot;erd&quot;, &quot;buzzerd&quot;, etc.<br />&quot;.{2,}erd&quot; Will match &quot;cherd&quot; and &quot;buzzerd&quot;, but not &quot;nerd&quot;<br />&quot;n[e]{1,2}rd&quot; Will match &quot;nerd&quot; and &quot;neerd&quot;<br />*锚<br />锚是指它所要匹配的格式，使用它能方便你查找通用字符的合并。<br />&quot;^blah &quot; - 匹配以blah为行首单词的一行文本；<br />$ blah&quot; &ndash;匹配以blah为行尾单词的一行文本；<br />&quot;\&lt;blah&quot; &ndash; 匹配以blah为首的单词，如：blahcake；<br />&quot;\&gt;blah&quot; &ndash; 匹配以blah为尾的单词，如：cakeblah；<br />&quot;\bblah&quot; &ndash; 匹配blah在这个单词的开头或结尾的字符串，如blahcake；<br />&quot;\Bblah&quot; &ndash; 匹配blah在这个单词的中间的字符串，如asblahaaa。<br />*间隔<br />Res中的另一可便之处是间隔(或插入)符号。实际上，这一符号相当于一个OR语句并代表|符号。下面的语句返回一段文本中象&quot;nerd&quot; 和 &quot;merd&quot;的句柄：&quot;(n|m)erd&quot;。间隔功能非常强大，特别是当你寻找文件不同拼写的时候。下面的例子能得到相同的结果：&quot;[nm]erd&quot;。当你使用间隔功能与Res的高级特性连接在一起时，它的真正用处更能体现出来。<br />*一些保留字符<br />Res的最后一个最重要特性是保留字符(也称特定字符)。例如，如果你想要查找&quot;ne*rd&quot;和&quot;ni*rd&quot;的字符，格式匹配语句&quot;n[ei]*rd&quot;与&quot;neeeeerd&quot; 和 &quot;nieieierd&quot;相符合，但并不是你要查找的字符。因为'*'(星号)是个保留字符，你必须用一个反斜线符号来替代它，即：&quot;n[ei]\*rd&quot;。其它的保留字符包括：<br />^ 、 . 、[、] 、$ 、( 、) 、 | 、* 、+ 、? 、{ 、}、\ 等。<br />&nbsp;</p>]]></description><category>基于Web的通用BBS系统的建立与维护(ASP)</category><comments>http://www.verykk.com/post/432.html#comment</comments><wfw:comment>http://www.verykk.com/</wfw:comment><wfw:commentRss>http://www.verykk.com/feed.asp?cmt=432</wfw:commentRss><trackback:ping>http://www.verykk.com/cmd.asp?act=tb&amp;id=432&amp;key=6fac664e</trackback:ping></item><item><title>VBScript及JavaScript脚本语言</title><author>a@b.com (adminnyee)</author><link>http://www.verykk.com/post/396.html</link><pubDate>Fri, 02 Jul 2010 20:23:01 +0800</pubDate><guid>http://www.verykk.com/post/396.html</guid><description><![CDATA[<p>Script(脚本)是由一组可以在客户端浏览器上运行的命令组合而成的语言，你可以把它想像成一个运行于客户端上的可执行程序。目前在网页编制上比较流行的脚本语言包括VBScript及JavaScript。它们都是一种与HTML语言相似的描述性语言，也是以文本形式存在，不像C语言或Java语言那样，需要编译连接成字节码形式的可执行程序。Script语句可以单独存成文档，也可以被嵌入到HTML的文件之中，与HTML语句结合在一起。当需要将Script语句直接加入到HTML文件中时，只要使用一个HTML标记符号&lt; Script &gt;即可。例如：<br />&lt;HTML&gt;<br />&lt;HEAD&gt;<br />&lt;TITLE&gt; temp &lt;/TITLE&gt;<br />&lt;/HEAD&gt;<br />&lt;Script Language = &quot;JavaScript&quot;&gt;<br />var i = 10;<br />document.write (i);<br />&lt;/Script&gt;<br />&lt;BODY&gt;<br />&lt;H1&gt;This is a JavaScript example.&lt;/H&gt;<br />&lt;/BODY&gt;<br />&lt;/HTML&gt;<br />另外，Script程序在HTML中的位置也比较自由，它可以在HTML文件中的任何位置。<br />脚本语言是一种解释性语言，可以直接由浏览器来解释执行。并且可以直接访问浏览器中的各种对象，如窗口对象、文档对象、框架对象、超链接对象等。脚本语言可以实现的功能很多，可以用于定义网页、在网页中加入动画、对网页中的各种元素进行处理，特别是在处理表单方面有很强功能。不仅如此，它还可以很方便地控制浏览器中的各对象的属性。例如，可以实现打开或关闭浏览器窗口、设置窗口状态、改变窗口中的超链接位置等。总之，一些常用的功能都可以用脚本语言实现。<br />本BBS系统中就运用了大量的脚本语言，一方面用来完成表单提交前的数据验证任务，另一方面用来完成打开新的窗口、关闭当前窗口、返回前一页及下拉菜单等功能。通过使用脚本语言既防止了大量错误数据被提交到服务器，进而节约了宝贵的系统资源；也使网页更加美观、操作更加方便。大大提高了系统的性能。<br />1、JavaScript<br />Java语言的功能很强大，在网页设计中非常的有效，但是它要求创建APPLET的人员必须是程序设计员。Sun Microsystems（太阳微系统）公司为了消除对于WEB站点的开发人员的特殊要求，专门发布了JavaScript。<br />JavaScript脚本语言是一种解释性，基本对象的脚本语言。虽然，它没有那些真正意义上的面向对象语言那么多的特性，但是对于它的预期功能而言，它能够实现的功能已经够大了。<br />Javascript并不是任何一种语言的删节版（它只是与Java语言的关系很接近）,它也不是任何一种语言的简化版。然而，它的使用是有限的。不能使用它创建一个独立的应用，比如，它几乎不能进行文件的读写。此外，Javascript脚本只能运行在解释性语言的环境下，或是WEB服务器和WEB浏览器上。<br />Javascript是一种比较随意的语言，这就并不意味着不一定必须明确地声明变量的类型。此外，在很多情况下，Javascript脚本语言在需要的时候可以进行自动转换。<br />JavaScript是Java与HTML结合的产物，HTML文档中可以嵌套JavaScript命令，但是JavaScript语句不需要编译，浏览器可以直接执行JavaScript语句。利用JavaScript结合CCS可以创建交互能力很强的WEB界面。<br />2、VBScript语言<br />当在设计WEB站点中使用JavaScript时，Microsoft公司也在其非常流行的Visual Basic的基础上，推出了另一种脚本设计语言VBScript。Microsoft Visual Basic Scripting Edition是程序开发语言Visual Basic家族的最新成员，它将灵活的Script应用于更广泛的领域，包括Microsoft Internet Explorer中的WEB客户机Script和Microsoft Internet Information Server中的WEB服务器Script。<br />JavaScript可以支持大多数的平台，而VBScript目前只能在Windows环境下的浏览器中运行。但是由于大多数用户的操作系统都选用Windowst系列，因此，许多WEB站点的开发人员研始大量的使用VBScript。VBScript流行的主要原因是它将ActiveX对象的使用变得非常的简单。ActiveX是Microsoft推出的一种新技术，它支持WEB页面调用类似OLE的对象。<br />VBScript使用ActiveX Script与宿主应用程序对话。使用ActiveX Script，浏览器和其他宿主应用程序不再需要每个Script部件的特殊集成代码。ActiveX Script使宿主可以编译Script、获取和调用入口点及管理开发者可用的命名空间。通过ActiveX Script，语言厂商可以建立标准Script运行时语言。Microsoft将提供VBScript的运行时支持。Microsoft正在与多个Internet组一起定义ActiveX Script标准以使Script引擎可以互换。ActiveX Script可用在Microsoft Internet Explorer和Microsoft Internet Information Server中。因此对VBScript脚本语言的使用也变得重要起来。<br />&nbsp;</p>]]></description><category>基于Web的通用BBS系统的建立与维护(ASP)</category><comments>http://www.verykk.com/post/396.html#comment</comments><wfw:comment>http://www.verykk.com/</wfw:comment><wfw:commentRss>http://www.verykk.com/feed.asp?cmt=396</wfw:commentRss><trackback:ping>http://www.verykk.com/cmd.asp?act=tb&amp;id=396&amp;key=b3fe7ba2</trackback:ping></item></channel></rss>
