ASP代码编写标准

时间:2008-10-07 12:01:36  来源:第二电脑网上收集  作者:

  第二电脑网导读:>缩进空格是指在每一级有两到四个空格。不要在源代码中保留TAB字符,这是因为TAB字符会随着不同用户的不同设置和不同的资源管理工具(打印、文档、版本控制等)而代表不同的宽度。 1.3 数据合法性检查 所有表单提交页面中,表单上必须填写项目和填写项目中非法输入的判断都在页面中用javascript在客户端判断,如果必须和服务器端数据比较才能判断输入项目是否正确不在...
  正文:

一、通用源代码格式规则
1.1 开发工具

推荐使用Microsoft ? 公司的Visual InterDev 来书写ASP/ target=_blank class=infotextkey>asp 代码,使用Macromedia ? 公司的Dreamweaver 来书写HTML代码,也可以使用UltraEdit、ASPEdit 2000等开发工具。

1.2 缩进空格

缩进空格是指在每一级有两到四个空格。不要在源代码中保留TAB字符,这是因为TAB字符会随着不同用户的不同设置和不同的资源管理工具(打印、文档、版本控制等)而代表不同的宽度。

1.3 数据合法性检查

所有表单提交页面中,表单上必须填写项目和填写项目中非法输入的判断都在页面中用JavaScript在客户端判断,如果必须和服务器端数据比较才能判断输入项目是否正确不在此例。
所有提交的信息(GET方式及POST方式)都必须在服务器端重新进行数据合法性校验,并过滤非法字符(& ; ` ' / " | * ? ~ < > ^ ( ) [ ] { } $ /n /r),例如,将"'"替换成"''" (两个单引号)号(替换字符串的工作将统一使用公共的CheckInputString(str) 函数);而对于数字型变量,要检查输入的数据是否全为数字(javascript中使用isFinite或isNaN, vbScript中使用IsNumeric)。

1.4 参数传递

建议使用POST方法,而不推荐使用GET方法;
严禁使用GET方法、SESSION或其它方式传递SQL语句;
禁止使用GET方式传递大量的查询字符串,特别是未经编码的汉字,HTTP协议传送表单域比查询字符串效率要高,而且带有一个大的查询字符串的页面在某些浏览器上会失效;
禁止使用SESSION、COOKIE传递非会话期间必要的参数。

1.5 URL

包含头文件,页面的链接,提交的页面,用到的图片,如果引用的是如"include"、"image"等公共部分,必须使用绝对路径,即以虚根目录"/"开始的路径,以提高运行效率。例如:

6.4 使用最简单的游标类型和记录锁定方式

在 ADO 中定义了四种不同的游标类型:
l动态游标(adOpenForwardOnly) - 用于查看其他用户所作的添加、更改和删除,并用于不依赖书签的 Recordset 中各种类型的移动。如果提供者支持,可使用书签。
l键集游标(adOpenKeyset) - 其行为类似动态游标,不同的只是禁止查看其他用户添加的记录,并禁止访问其他用户删除的记录,其他用户所作的数据更改将依然可见。它始终支持书签,因此允许 Recordset 中各种类型的移动。
l静态游标(adOpenDynamic) - 提供记录集合的静态副本以查找数据或生成报告。它始终支持书签,因此允许 Recordset 中各种类型的移动。其他用户所作的添加、更改或删除将不可见。这是打开客户端 (ADOR) Recordset 对象时唯一允许使用的游标类型。
l仅向前游标(adOpenStatic) - 除仅允许在记录中向前滚动之外,其行为类似动态游标。这样,当需要在 Recordset 中单程移动时就可提高性能。

在打开 Recordset 之前设置 CursorType 属性来选择游标类型,或使用 Open 方法传递 CursorType 参数。部分提供者不支持所有游标类型。请检查提供者的文档。如果没有指定游标类型,ADO 将默认打开仅向前游标。

在 ADO 中定义了四种不同的游标类型:
ladLockReadOnly - 默认值,只读。无法更改数据。
ladLockPessimistic - 保守式记录锁定(逐条)。提供者执行必要的操作确保成功编辑记录,通常采用编辑时立即锁定数据源的记录的方式。
ladLockOptimistic - 开放式记录锁定(逐条)。提供者使用开放式锁定,只在调用 Update 方法时锁定记录。
ladLockBatchOptimistic - 开放式批更新。用于与立即更新模式相反的批更新模式。

打开 Recordset 前设置 LockType 属性可指定打开时提供者应该使用的锁定类型。读取该属性可返回在打开的 Recordset 对象上正在使用的锁定类型。Recordset 关闭时 LockType 属性为读/写,打开时该属性为只读。

在实际使用过程中应该使用适合于处理任务的最简单的游标类型和记录锁定方式。例如:

仅打开一个静态的记录集并输出:
Rs.Open sql,Conn,0,1 ' adOpenForwardOnly, adLockReadOnly
打开的记录集中有text类型的字段:
Rs.Open sql,Conn,1,1 'adOpenKeyset, adLockReadOnly

6.4 SQL字符串过滤

所有的字符串输入框在向数据库提交查询、插入、删除或修改一条记录时必须用字符串过滤函数检查,即:
字符型:复写提交内容中的"'"、"''"等(使用公共函数的CheckInputString()。),并检查字符串的长度是否超长。
数值型:使用IsNumeric()判断输入是否为数字。
整 型:使用Int(), Fix(),Round() 截取其整数值。
日期型:使用isDate()函数判断是否为正确的日期输入。

6.5 SQL事务执行

对数据库操作的事务一般应当使用SQL的存储过程执行。对于需要在ASP页面中执行的数据库操作,所有插入、删除、修改数据库不得使用RecordSet对象,必须使用Connect对象用SQL语句执行,RecordSet只在执行查询时使用。所有检索数据库的操作禁止使用"SELECT * FROM …",而要使用"SELECT 字段一, 字段二, 字段三, … FROM…"。

6.6 ADO对象的关闭

所有连接数据库页面中,Connect和Recordset等ADO对象必须在用完后立即关闭(Close),然后将其对象释放(Set ***=nothing)。

七、Cookies
7.1 Cookies的作用域

Cookies的Path属性规定了Cookies返回服务器的具体路径。为了使Cookies能够在整个网站的各个目录都可以起作用,应将Domain域属性设为:"/",
Cookies的Domain域属性限制了cookies可由浏览器送达之处。为了使cookies能够在整个网站的各子站点都可以起作用,应将Domain域属性设为:".yourDomain.com"。该值将作为常量cookie_Domain放入站点的公共文件中。即:

Response.Cookies("UserName").Path="/"
Response.Cookies("UserName").Domain= cookie_Domain

7.2 Cookies的有效期

Cookies的Expires属性规定了Cookies的结束作用时间。如果要建立一个会话期间的cookies,即要在客户结束浏览后失效,则一定不能设置该属性。

7.3 Cookies的安全

Cookies内部的敏感信息必须加密,该加密方式在公共密钥函数库中定义。

1.5 URL
包含头文件,页面的链接,提交的页面,用到的图片,如果引用的是如“include”、“image”等公共部分,必须使用绝对路径,即以虚根目录“/”开始的路径,以提高运行效率。例如:
<A HREF="/index.asp">
<IMG SRC="/images/logo.gif”>

在一个相对独立的模块内部,可以使用相对路径,以提高可移植性。但是,禁止使用“..”返回上一级目录,即禁止使用类似“../images/logo.gif”的URL。相对路径如下书写:
<A HREF="index.asp">
<IMG SRC="images/logo.gif”>

确保在指向目录的 URL 中使用后斜杠 (/)。如果您省略了后斜杠,浏览器就会向服务器发出请求,只是为了告诉服务器,它在请求目录。浏览器就会发出第二个请求,将斜杠附加到 URL 后面,只有此后,服务器才能以该目录的默认文档或目录列表(如果没有默认文档且启用了目录浏览的话)响应。附加斜杠可省去第一个、无用的住返。为便于用户阅读,可以省略显示名称中的后斜杠。
例如,写:
<A HREF=http://msdn.microsoft.com/workshop/” TITLE=”MSDN WebWorkshop”>http://msdn.microsoft.com/workshop </A>
这也适用于指向 Web 站点上主页的 URL:使用下面的:<A HREF=http://msdn.microsoft.com/”>,而不使用 <A HREF=http://msdn.microsoft.com”/>。

1.6 日期

在使用、判断和显示日期时,一定要确定年为4位。统一定义为
长日期格式为: XXXX年XX月XX日
短日期格式为:XXXX-XX-XX
在ASP输出时必须使用FormatDateTime()函数进行格式化,前端输入时统一使用XXXX-XX-XX格式,并在后端使用isDate()进行检验。

二、HTML
2.1 标记

HTML 对大小写不敏感,但为改善可读性,规定大写所有标志、属性,小写属性值,属性值外必须加引号,如:<TABLE BORDER=”0” CELLSPACING=”0” CELLPADDING=”0” ALIGN=”left”>

2.2 META 标记

所有中文页面,必须在“<HEAD> … </HEAD>”头中加入如下META标记:
<META HTTP-EQUIV="content-type" CONTENT="text/html; charset=GB2312">
该META标记描述本页使用的语言。浏览器根据此项,就可以选择正确的语言编码,而不需要读者自己在浏览器里选择。GB2312是指简体中文,ISO-8859-1是指英文,而台湾BIG5内码的主页则是用BIG5。

在首页和各频道首页应加入如下META标记:
<META NAME="keywords" CONTENT="yourkeyword">
  <META NAME="description" CONTENT="your homepage's description">
  该META标记声明本页的关键字和描述。在页面里加上这些定义后,一些搜索引擎就能够让读者根据这些关键字查找到你的主页,了解你的主页内容。

在每次都需要重新生成的,不需要用户缓存的页面,应加入如下META标记:
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
该META标记强制性调用网上的最新版本。浏览器为了节约时间,在本地硬盘上保存一个网上文件的临时版本。在你要重新调用时,直接显示硬盘上的文件,而不是网上的。如果你想让用户每次都看到最新的版本,就加上这句话。

2.3 统一样式表引用

为了使整个网站的风格样式统一,必须统一使用公共的层叠样式列表,即在每个HTML文件的“<HEAD> … </HEAD>”头中加入:
<LINK REL="stylesheet" TYPE="text/Css" HREF="/style/default.css">

如果项目相对比较独立,应该使用自己的CSS定义,增加可移植性。

2.4 TITLE设定

所有中文页面TITLE设置需遵照如下标准:
YourDomain.com+空格+本页内容描述

所有英文页面TITLE设置需遵照如下标准:
YourDomain.com+空格+ -+空格+本页内容描述

2.5 表单

2.5.1 文本框:文本框(<INPUT TYPE=”text” NAME=”” …>)的宽度(SIZE属性)以数据库中相对应的字段长度为参考,并参照邻近文本框的宽度,以美观为原则确定;文本框的最大内容长度(MAXLENGTH属性)以数据库中相对应的字段长度为标准确定。

2.5.2 表单提交:必须使用POST方法,而不允许使用GET方法。

2.6 表格

2.6.1 高度和宽度的定义:应直接在单元格属性内用象素数定义,尽量不要用百分比定义,也不要用空白图去撑这个单元格。如特殊情况要求,只宜用百分比对单元格指定宽度,因为Netscape不支持百分比定义的高度。

2.6.2 空单元格:所有需要指定背底色或边框色的空单元格请一定要在该单元格内插入 ,如果该单元格的高度<9或宽度<5时,请用img目录下的none.gif。无背底色和边框色的空单元格,仅仅是用来定位时,请这样写:<TD HEIGHT="??" WIDTH="???"></TD>

2.7 图片

<IMG>标签必须使用WIDTH和HEIGHT属性来定义图片的尺寸,以加快浏览器显示页面的速度。对于一般的非占位用的图片,必须使用ALT属性来定义其文本显示。

2.8 注释

使用注释声明每一子块区的开始和结束,注释语句使用英文。如:
<!— User Login In Zone -->
… …
ASP代码编写标准》由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Programming/ASP/2008-10-07/2834.html


关键字:

关于《ASP代码编写标准》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td