asp开发规范
一、单页编写规范:
切记页面要分模块来写:
第一模块:接收参数。[有可能从不同页面提交到同一个页面;也可能出现两个表单项以哪个优先的处理。
第二模块:定义全局变量。
第三模块:写处理代码(尽量将代码都包含到函数中,详见页面附注一。)。——到此asp代码主要部分完成。
第四模块:纯html代码,利用储存在全局变量中的值来生成页面。
第五(注意):要在页面头部写清页面逻辑。(如何接收、处理。)
优点:便于维护。模块独立,便于重复使用到类似页面。
二、全站文件构建规范:
1.工程接手后,先观看静态页,掌握逻辑及浏览顺序。
2.抽取页面中被重复利用到的地方做成嵌入文件。
3.抽取头文件、尾文件,及左侧菜单栏,做成嵌入文件。
4.划分页面结构,做出模板文件。——以后制作中就copy它,然后就可直接制作。
注意:不要急于编写页面,除非你接手的是一项小工程,或者用户需求已经非常清楚确定并且不会再更改,否则,保持页面代码的可读性是非常重要的!(当你面对大返工时,你的心情如何?先对潜在的危险考虑一下吧!)
——因为我们每个人都对自己写的代码非常明白,而都比较难于读懂别人写的代码。并且,由于客户需求的变化,修改甚至推翻原有设计是比较常见的事。所以要注意在编写代码时注意让后来者快速读懂,并便于修改。][至少要在页面头部加上注释,在代码中间重要的部分,也有必要加一些说明性注释。]
我们所作的一切仅仅是为了:增加可移植可重用性、使逻辑清楚,便于维护、
适应用户需求的改变,并尽快完成,减少无用功。
――――――――――――――――――――――――――――――――――――――
附注一:第三模块编写说明。《ASP页面编写结构》
1.先写注释
2.写嵌入文件。
3.写大块的ASP代码(从COM中取出的)
——注意:复杂页面,尽量将不同COM的操作封装在独立的函数里;
——函数结尾有一句调用,后面页面中直接读取函数处理完的数据(已被赋给全局变量)
——调用函数前,对页面入口参数进行合法性检验。
附注二:第四模块编写说明。《Html代码部分需要注意的》
1)最好不使页面的asp代码和html代码混杂在一起,——感觉比较混乱。
2)通过获取全局变量的数据得到asp的处理结果。
3)关于客户端javascript:
表单提交前要进行合法性检验。写在
1、一些经常要用到的程序,除了写成函数处,一般要单独出来,以便共用。如错误(主要用于提交页面的非法参数)处理。可以写成一个AlertError函数(主要是输出一段JavaScript),考虑到函数的通用性,设定的参数有:JavaScrip弹出警告框的说明文字(如:名字不能为空等);页面location.href的变量(如果为空,则window.history.back())。
2、写ASP的时候,注意累积一些东西,这样对以后工作效率的提高会有不少的帮助。
如:数据的提交及处理是最常见的,一般的做法是每一个新的工程都要重新做。其实,只要在第一个工程里花多一点的时间,你就可以做一个标准的可以重复利用的数据提交处理程序。这个程序建议是在一个页面内完成的,不要把提交前台和后台分开,分开的想法是代码的可读性高,但是,只要把增加、修改、删除都封装成函数,代码的可读性一样很高,而且不必反复切换页面去寻找页面间传替的变量。程序先是读取所有的参数。其中active参数用于确定操作而调用函数add(), update(), delete(), show()(修改时用于显示旧数据)等。注意这个程序不要有太多的输入框,但同时最好又包括了各种输入框类型,还有不要用任何花巧的页面设计等,这样重复利用起来才是最简单的。
3、HTML代码尽量直接写在页面上,而不要用Response.Write输出大量的HTML代码。
因为Response.Write在DW等网页编辑器中是不可见的,这不利于美工的修改。
4、不要在页面上传递的数据库内的数据。
但是很多人却这么做了,导致的后果是很明显的,就是对方可以修改你的数据而导致数据的错误。正确的做法是只传递数据库内数据的关健字,然后在处理页面再一次从数据库中select出数据。不要因为这种做法比较麻烦而不去做。
当然,如果你传递的数据只是用于页面的输出的话不在讨论范围。
5、尽量减少session的使用,可以的话只用session记录用户名。
因为session太占资源了。我试过一个用户用了几十个session,结果初始化session的值就用了10多秒。
6.HTML代码中如果内联元素<%=>过多,建议在编写脚本时使用html调试,但最终交付使用时,最好把其连续成连接字符串用response.write一次调用!起效率反而要高的!
特别是对使用非常频繁的asp页面文件。
7.保证整个asp页面的输出能按标准的<html><head></head><body></body></html>基本来设计结构,我见很多在<html>标记之前执行javascript 然后才开始<head>信息,这对版本高的浏览器问题不大,但对版本低的浏览器已经一些非主流浏览器显示可能有问题,可能css不能准确调用等~~
8.在数据库连接,option explicit,全局同用变量定义,通用函数定义(如处理错误的涵数,判断非法输入检测的函数等..).......等之后就紧跟<html><head><title>...的头包含文件
可以封装在一个子函数中,减少单独包含#include文件的冗余!
同样的设定尾缀的包含版本信息和</body></html>的html文件!也可封装在一个函数中调用,不明确设定服务器也能自动给加上,减少服务器的动作总是好事,哪怕仅仅省了百万分之一秒!
9.模块化良好的流程设计,变动修改调整都会回变的很清爽轻松!
先设计好流程计划好功能模块,甚至先写出主框架的代码,最后再动手填写各个功能块调用的函数和#include文件,越详细的计划虽然开始繁琐,但在后期带来高效率!工作起来也感觉是一种享受~~!!否则被一团乱麻杂乱无章的代码弄的无休止的查找逻辑错误,苦不堪言,更别提别人能耐心看懂你的代码了!维护非常艰难~~
虽然增加了大量的函数调用表面上看来似乎性能下降,但其实带来非常好的便于维护的稳定的性能,稳定有时比速度还要重要,而且,可以把很多全局变量移置为局部变量带来更好的执行效率!
<!--#include file=myCONN.asp-->
<!--#include file=myChar.asp-->
call htmlstart()
act=request("action")
Select case act
case "delete"
call del()
case "addset"
call add()
.....
case else
call main()
end select
call htmlend
-------绝对比在整个页面中顶部是 IF 底部是end if
中间镶嵌无数~~判断语句清晰名了~
10.程序写完了运行通过,真正的苦日子才开始!
优化代码,仔细检查存在的程序bug,是更枯燥乏味的漫长的过程~~!!:(
我通常在页首设置star=time()
在页尾设置response.write time()-start
来检查页面的执行情况~~
a.反复研究asp代码,精简优化asp代码,减少一切可能的冗余代码,如如果使用VBSCRIPT则将@language=VBSCRIPT关闭,如果没有用session可以关闭~尽量用隐藏表单或querystring代替session在页面间传递变量..
b.优化ADO查询性能,反复检查查询代码,尽可能是干净利落的查询而不是庞杂无章的查询,recoredset.close connetion.close该用就用,不要后拖!当很多用户请求同一页面时!再重要不过了~~
11........无穷无尽的研究升级下一个新版本!!!!!
程序软件就是这样的:(
也就是大家开发时公用的部分,要事先定义好。
公用的变量,公用的函数。能想到的都写上去。
每个页面的输入的项目,和输出的项目。
还有每个页面的需要检测的项目。
还有可能的话,把基本的类实现。
比如上传下载用的,发妹儿用的....
一、需求分析
如果是帮客户完成,则此处的需求应该是你与该客户共同协商,如他们需要该网站实现什么功能等等。如果是你自已先做网站,如自己做,那应该是你自己来思考应该有什么功能。当然考虑应该充分一些,如你有哪些人登录并使用这个站点,他们各自需要什么功能。
二、网站网格定位
这要根据你客户需求性质而言,如某个医院的站点你不能做得太古惑,配色要适当。
三、网站核心技术的考虑
要大体解决网站核心技术的难点,有必要时可写伪代码,不过大多时候没必要,编程主要是你把思路弄清楚。比如说,某一网站需要登录,然而他们对登录时密码及密码存储要求加密等等,你就要解决这个问题,或采用附加码等等(当然这个问题不怎么难)。
四、数据库设计
数据库设计过程中,当然也要根据以上几点来定位了,你的技术中需要解决些什么,要用到哪些表、存储过程、查询等等。
asp开发规范
一、单页编写规范:
切记页面要分模块来写:
第一模块:接收参数。[有可能从不同页面提交到同一个页面;也可能出现两个表单项以哪个优先的处理。
第二模块:定义全局变量。
第三模块:写处理代码(尽量将代码都包含到函数中,详见页面附注一。)。——到此asp代码主要部分完成。
第四模块:纯html代码,利用储存在全局变量中的值来生成页面。
第五(注意):要在页面头部写清页面逻辑。(如何接收、处理。)
优点:便于维护。模块独立,便于重复使用到类似页面。
二、全站文件构建规范:
1.工程接手后,先观看静态页,掌握逻辑及浏览顺序。
2.抽取页面中被重复利用到的地方做成嵌入文件。
3.抽取头文件、尾文件,及左侧菜单栏,做成嵌入文件。
4.划分页面结构,做出模板文件。——以后制作中就copy它,然后就可直接制作。
注意:不要急于编写页面,除非你接手的是一项小工程,或者用户需求已经非常清楚确定并且不会再更改,否则,保持页面代码的可读性是非常重要的!(当你面对大返工时,你的心情如何?先对潜在的危险考虑一下吧!)
——因为我们每个人都对自己写的代码非常明白,而都比较难于读懂别人写的代码。并且,由于客户需求的变化,修改甚至推翻原有设计是比较常见的事。所以要注意在编写代码时注意让后来者快速读懂,并便于修改。][至少要在页面头部加上注释,在代码中间重要的部分,也有必要加一些说明性注释。]
我们所作的一切仅仅是为了:增加可移植可重用性、使逻辑清楚,便于维护、
适应用户需求的改变,并尽快完成,减少无用功。
――――――――――――――――――――――――――――――――――――――
附注一:第三模块编写说明。《ASP页面编写结构》
1.先写注释
2.写嵌入文件。
3.写大块的ASP代码(从COM中取出的)
——注意:复杂页面,尽量将不同COM的操作封装在独立的函数里;
——函数结尾有一句调用,后面页面中直接读取函数处理完的数据(已被赋给全局变量)
——调用函数前,对页面入口参数进行合法性检验。
附注二:第四模块编写说明。《Html代码部分需要注意的》
1)最好不使页面的asp代码和html代码混杂在一起,——感觉比较混乱。
2)通过获取全局变量的数据得到asp的处理结果。
3)关于客户端javascript:
表单提交前要进行合法性检验。写在对下拉框要有和隐藏按钮同步的,写出单独小函数,放在该按钮的下面。
对大型innerHTML型的客户端交互操作,将代码集中写在相应对应的写客户端脚本时,可多写些函数,使函数间传递的参数简单,功能单一,以便日后有类似页面,可以将其拆下来再使用。
对网页制作的要求:
网页人员完成的页面,为保证在使用时不会出现混乱,请他们作以下处理:
1.表格不要嵌套太多;
2.表格宽度要用象素规定宽度;
3.单页中,一个功能模块要做成一个表格,以便编写页面时,将重复部分提取成嵌入文件。
4.其它要注意的:精简代码、注意表格中字符和边框的宽度。
5.文件名请用英文小写加数字(和半角下划线)命名。[想想你的页面搬到unix主机上的惨状]
1、开发需要的人民币
2、开发需要的时间,包括首次测试时间和正式运行时间
3、开发需要的人力(程序员、美工、技术总监等)
4、开发文档(包括网站架构、内容、运行平台、语言等技术说明)
Web 开发的分散性和交互性,决定了 Web 开发必须遵从一定的开发规范和技术约定,只有每个开发人员都按照一个共同的规范去设计、沟通、开发、测试、部署,才能保证整个开发团队协调一致的工作,从而提高开发工作效率,提升工程项目质量。
一、项目的角色划分
如果不包括前期和后期的市场推广及销售人员,开发团队一般可以划分为项目负责人、程序员、美工三个角色。
项目负责人习惯称为项目经理,负责项目的人事协调、时间进度等安排,以及处理一些与项目相关的其他事情。程序员主要负责项目的需求分析、策划、设计、代码编写、网站整合、测试、部署等环节的工作。美工负责网站的界面设计、版面规划,把握网站的整体风格。如果项目比较大,可以按照三种角色把人员进行分组。
角色划分是Web项目技术分散性甚至地理分散性等特点的客观要求,分工的结果还可以明确工作责任,最终保证了项目的质量。分工带来的负效应就是增加了团队沟通、协调的成本,给项目带来一定的风险。所以项目经理的协调能力显得十分重要,程序开发人员和美工在项目开发的初期和后期,都必须有充分的交流,共同完成项目的规划和测试、验收。
二、开发工具的选取
不象C/S结构程序开发,可以一门语言从头到尾,你用Delphi,就是Delphi程序员,你用VC++,你就是VC程序员。B/S结构的Web开发工作,工具的选择是一件痛苦的事情。从Windows到Linux,从IIS到 Apache,从J2EE到 .NET,从EJB到COM到.NET组件……还有 Asp、Asp.net、Jsp、Php、Perl、Javascript、Vbscript……
美工也轻松不了多少,什么"网页三剑客" "新网页三剑客"、FrontPage、Photoshop、CorelDraw……谁都说自己是最强大的!
我们的经验是,选用工具时最好是统一的,但是也不必刻意强求一致。正是Web开发工具的多样性,才成就了今天互联网多姿多彩的局面。只要程序员的纯Html代码的功夫足够过硬,一般不会影响网站最后的整合工作。
三、项目开发流程
由项目经理牵头,以程序员为重心,共同讨论,完成用户需求分析,产生网站的栏目规划(用树形图表示),标出哪些是静态页面,哪些是动态页面。动态页面须要程序实现。制定网站的界面框架,包括首页构图,及各页面间的钩稽关系。产生各栏目文件夹的结构图(一些公共文件夹如images、scripts、 styles等需要固定存放,共同调用)。
然后由美工根据内容表现的需要,设计静态网页和其它动态页面界面框架,该切分的图片要根据尺寸切割开来。给需要程序动态实现的页面预留页面空间。制定字体、字号、超级链接等CSS样式等。
在美工设计页面的同时,程序员着手开发后台程序代码,做一些必要的测试。
美工界面完成后,添加程序代码,组合网站,由项目组共同联调测试,发现bug,完善一些具体的细节。最后进行网站部署。
以上的每一部都会产生一些阶段性成果,项目经理需要及时进行审核、监督,发现问题即使纠正。
四、 一些技术规则
1,数据库命名约定
表命名约定:表名长度不能超过30个字符,单词首写字母大写,多个单词间不用连接符号。
字段命名约定:字段名尽量采用英文单词,单词首字母大写,单词之间用"_"隔开,命名规则是"表类别名_单词",如:User_Info,News_Content。
视图命名约定:采用规则View_表A_表B_表C,其中View表示"视图"。这个视图由几个表产生就用连字符"_"连接几个表的名,如果表过多可以将表名适当简化。
存储过程命名约定:P_表名_存取过程名(缩写),比如P_User_Deleted。
2,文件夹命名约定
公共文件夹:
/images 公共图片
/styles 样式表
/scripts 脚本
/ftps 下载
/doc 网站相关素材、文档
/readme.txt 网站说明文档
/helps.htm 网站帮助文档
/mylogs.txt 网站维护记录
其它栏目的命名,可以用拼音首字母简称,也可以用英文单词。全部文件夹的含义在readme.txt文件中说明。
3,对象及变量命名约定
每个变量名必须先定义,再使用。在ASP文件的最开头添加语句<%Option Explicit%>可以强制变量定义。代码块必须采用缩进格式。每个函数前必须标明函数的功能、输入参数、返回值的相关信息。
变量类型 缩写前缀
String str 或 s
Integer int
Date dt
Object obj或 o
Boolean bol或 b
Byte byt
Double dbl
Error err
Long lng
Single sng
五、 一些小经验
1,能用静态网页表现的内容,尽量不用程序代码动态实现。
2,设计阶段,必须和用户进行充分的交流,完全、准确的了解用户的需求。既不能歪曲用户的意思,也不能一味迎合用户的非正当需求,也不能对自己没有把握的技术甚至不可能实现的技术夸下海口。需求分析是一个沟通、交流、引导、教育、斗争、妥协的过程。需求分析结果要有文字资料存档。
3,技术参数必须了解准确。比如用户的软件平台是linux系列,那你的系统就只好用Java+Apache开发了,这时候你的ASP.NET技术就用不上了。
4,在必要的时候,让用户对已经确定的需求内容签字,盖章。
用Rational Rose设计就没什么问题了,所有需要的文档都能出
数据字典!
用DreamweaverMX,editPlus,notepad 都用了..
贴个:
asp开发规范
一、单页编写规范:
切记页面要分模块来写:
第一模块:接收参数。[有可能从不同页面提交到同一个页面;也可能出现两个表单项以哪个优先的处理。
第二模块:定义全局变量。
第三模块:写处理代码(尽量将代码都包含到函数中,详见页面附注一。)。——到此asp代码主要部分完成。
第四模块:纯html代码,利用储存在全局变量中的值来生成页面。
第五(注意):要在页面头部写清页面逻辑。(如何接收、处理。)
优点:便于维护。模块独立,便于重复使用到类似页面。
二、全站文件构建规范:
1.工程接手后,先观看静态页,掌握逻辑及浏览顺序。
2.抽取页面中被重复利用到的地方做成嵌入文件。
3.抽取头文件、尾文件,及左侧菜单栏,做成嵌入文件。
4.划分页面结构,做出模板文件。——以后制作中就copy它,然后就可直接制作。
注意:不要急于编写页面,除非你接手的是一项小工程,或者用户需求已经非常清楚确定并且不会再更改,否则,保持页面代码的可读性是非常重要的!(当你面对大返工时,你的心情如何?先对潜在的危险考虑一下吧!)
——因为我们每个人都对自己写的代码非常明白,而都比较难于读懂别人写的代码。并且,由于客户需求的变化,修改甚至推翻原有设计是比较常见的事。所以要注意在编写代码时注意让后来者快速读懂,并便于修改。][至少要在页面头部加上注释,在代码中间重要的部分,也有必要加一些说明性注释。]
我们所作的一切仅仅是为了:增加可移植可重用性、使逻辑清楚,便于维护、
适应用户需求的改变,并尽快完成,减少无用功。
――――――――――――――――――――――――――――――――――――――
附注一:第三模块编写说明。《ASP页面编写结构》
1.先写注释
2.写嵌入文件。
3.写大块的ASP代码(从COM中取出的)
——注意:复杂页面,尽量将不同COM的操作封装在独立的函数里;
——函数结尾有一句调用,后面页面中直接读取函数处理完的数据(已被赋给全局变量)
——调用函数前,对页面入口参数进行合法性检验。
附注二:第四模块编写说明。《Html代码部分需要注意的》
1)最好不使页面的asp代码和html代码混杂在一起,——感觉比较混乱。
2)通过获取全局变量的数据得到asp的处理结果。
3)关于客户端javascript:
表单提交前要进行合法性检验。写在对下拉框要有和隐藏按钮同步的,写出单独小函数,放在该按钮的下面。
对大型innerHTML型的客户端交互操作,将代码集中写在相应对应的写客户端脚本时,可多写些函数,使函数间传递的参数简单,功能单一,以便日后有类似页面,可以将其拆下来再使用。
对网页制作的要求:
网页人员完成的页面,为保证在使用时不会出现混乱,请他们作以下处理:
1.表格不要嵌套太多;
2.表格宽度要用象素规定宽度;
3.单页中,一个功能模块要做成一个表格,以便编写页面时,将重复部分提取成嵌入文件。
4.其它要注意的:精简代码、注意表格中字符和边框的宽度。
5.文件名请用英文小写加数字(和半角下划线)命名。[想想你的页面搬到unix主机上的惨状]
这一点, 以前没有注意过, 我都是这样的命名:
editNews.asp
delNews.asp
看样子要写成
edit_news.asp
del_news.asp 好一点。
我也来补充几点代码规范:
1. 很多人都没有注意到的, 也是我特别要建议的: 运算符的两侧, 请多写一个空格。 试比较:
a=(b*c/d+3.243)&" sdfsdfsdflkj" &" asdsd"
和
a = (b * c / d + 3.243) & " sdfsdfsdflkj" & " asdsd"
的可读性区别。 不言自明。
2. 代码请按照逻辑进行正确的缩进!
例子:
if a = 3 then
response.write " test"
else
response.write " sdfsdf"
end if
' -------------> 注意这里, 两个逻辑上的语句块之间请保留一个空行
do while not rs.eof
response.write " test"
rs.MoveNext
loop
错误的例子:
if not rs.eof then
response.write " a"
else
response.write " sfldfsd"
end if
if a = 1 then
if b = 2 then
c = " sdfkgkgskldf"
if d = " dfs" then
e = " sdf"
end if
f = " sdlkfsldfk"
end if
for i = 0 to 100
response.write i
next
end if
据我观察, 以上代码习惯的人在 asp 程序员里面至少占 80%, 我说的一点都不夸张。
你们看看吧, 上面这段代码, 能否看懂。 反正我是看到这种就头大。
|
不过从可读性的角度来说,空4个是不错的,空2格的效果就要差点了。 | ||||
|
|
asp开发规范 ——写这个东西请多多指教,以后开发时好少吃点苦头。 一、单页编写规范: 二、全站文件构建规范: 我们所作的一切仅仅是为了:增加可移植可重用性、使逻辑清楚,便于维护、 附注一:第三模块编写说明。《ASP页面编写结构》 附注二:第四模块编写说明。《Html代码部分需要注意的》 对网页制作的要求: 为了规范程序代码编写,提高代码可读性,降低后期维护成本,提高办公效率,建议以后编写的程序按以下几条规范进行: 一、 统一VBSCRIPT和ASP程序编写规范: (一)变量命名规则: 由于在ASP和VBSCRIPT中因为不需要声明变量,同时不能声明变量的类型,但为了提高代码的可读性,养成好的开发习惯,对于本系统开发的变量命名统一规则如下: 1. 使用Dim、Public、Private声明变量; 例如:Dim iStudentNum 2. 变量类型的体现: a、 整型变量:以小写字母i开头,后面跟变量标示符,英文单词的第一个字母大写。 例如:下面声明一个存储数据库记录多少的变量 Dim iResordsetNumber b、 单精度实体变量:以小写字母f开头,后面跟变量标示符,英文单词的第一个字母大写。 c、 双精度实体变量:以小写字母d开头,后面跟变量标示符,英文单词的第一个字母要大写。 d、 字符型变量:以小写字母s开头; e、 布尔型变量:以小写字母b开头; f、 数组变量:数组类型+“_”+“Array”+“_”+“变量标示符” 例如:定义一个存储学生成绩的数组(存储单精度实体类型变量) Dim f_Array_StudentMark 3. 变量标示符要符合标示符标准,同时容易理解,尽量使用英文单词来代替,尽量避免使用缩写或简写。 例如:存储校友通讯录的字符串变量定义为: Dim sSchoolfellowAddressList; 虽然这样定义在输入的时候比较麻烦,但是,它大大提高了程序的可读性,见其变量命名就知其意。在做变量查找的时候也比较方便。 速度和性能总是不能两全,为了方便后者我们也就只有牺牲速度。 4.在变量定义后面加变量功能定义的注释。 (二)常量命名规则: 类型体现和上面一样,不一样的地方是,所有后面的标示符全部大写,例如: 定义一个存储语言种类的的字符型常量: Const sLANGUAGE_TYPE=”Chinese” (三)功能函数、过程命名规则: 1. 使用Function声明函数,用Sub声明过程; 2. 函数名或过程名的第一个字母大写,且后面的每个单词第一个字母大写。 例如: Function CheckValidityOfInput(sStuentMark) ‘此处写代码 ………… End Function 3. 函数名或过程名要容易读,简单明了。 4. 在函数前面加注释,说明函数功能、参数说明、创建日期、修改日期、修改原因、创建人、修改人等相关信息。 (四)代码缩进标准: 为了提高代码的美观型和易读性,在此提出代码编写的版面格式:区间与区间之间以一个<Tab>为间距。 例如: ‘*********************************************************** ‘功能:检测输入字符串中的单引号,如果有则把原来的一个单引号变成两 ‘ 个单引号,两个变成四个,依次类推,从而避免SQL语句执行错误。 ‘创建人:XXXX ‘创建时间:2002-7-6 ‘修改时间: ‘修改原因: ‘修改人: ‘输入参数说明:sInputString:需要进行单引号检测的字符串 ‘*********************************************************** Function CheckValidityOfInput(sInputString) Dim iCirculationControl ‘控制循环 Dim sApartString ‘分离字符检测 Dim iLenOfInput ‘输入字符长度 iLen= Len(Trim(sInputString)) For iCirculationControl = 1 To iLen If Mid(sInputString, iCirculationControl, 1) <>"'" Then sApartString = sApartString & _ Mid(Trim(sInputString), iCirculationControl , 1) Else sApartString = sApartString & "''" End If Next CheckValidityOfInput = sApartString End Function 二、 统一JavaScript程序编写规范: JavaScript的命名规则和上面大部分相同,唯一不同的地方是:变量使用Var来声明,在声明结束后以分号(;)结束。 函数的代码要求层次清楚,该写在下一行的地方尽量往下一行写,不要在一行中完成所有代码,这样看起来不容易,检查错误也特别费时。 在写函数的时候记着加注释内容,以便以后维护时快速了解程序功能。 下面是一个JavaScript程序: <Script Language=”JavaScript”> //*********************************************************************** //功能:对Form中的Text,Password,TextArea对象进行单引号处理,解决由于单引号 // 起的系统错误。 //创建人:XXXX //创建时间:2002-7-8 //修改时间: //修改原因: //修改人: //********************************************************************** function CheckElement() { var sNeedCheck=""; //检测属于INPUT标签的内容 var iControlInput=0; //控制循环 var iLocationInput=0; //控制位置 var iLengthInput=0; //存储字符串长度 var sCheckingInput=""; //正在检测的字符 var sReplaceInput=""; //替换字符 var sHaveCheckInput=""; //已经检测的字符 var objInput; //存储INPUT对象; var objTextArea; //存储TextArea对象 var iControlTextArea=0; var iLocationTextArea=0; var iLengthTextArea=0; var sCheckingTextArea=""; var sReplaceTextArea=""; var sHaveCheckTextArea=""; //检测页面中的Text和Password对象中的单引号 for (i = 0; i < document.all.tags('INPUT').length; i++){ objInput = document.all.tags('INPUT'); if(objInput.type=='text'|| objInput.type=='password'){ sNeedCheckInput=obj.value; iLengthInput=sNeedCheckInput.length; for(iControl=0;iControl<iLength;iControl++){ sCheckingInput=sNeedCheckInput.charAt(iControl); if(sCheckingInput==”’”) sReplaceInput=”’’”; else sReplaceInput=sCheckingInput; sHaveCheckInput=sHaveCheckInput+sReplaceInput; } } objInput.value=sHaveCheckInput; } //检测页面中的TextArea对象中的单引号 for (i = 0; i < document.all.tags('TEXTAREA').length; i++){ objTextArea = document.all.tags('TEXTAREA'); if(objTextArea.type=='text'|| objTextArea.type=='password'){ sNeedCheckTextArea=obj.value; iLengthTextArea=sNeedCheckTextArea.length; for(iControl=0;iControl<iLength;iControl++){ sCheckingTextArea=sNeedCheckTextArea.charAt(iControl); if(sCheckingTextArea==”’”) sReplaceTextArea=”’’”; else sReplaceTextArea=sCheckingTextArea; sHaveCheckTextArea=sHaveCheckTextArea+ sReplaceTextArea; } } objTextArea.value=sHaveCheckTextArea; } } </Script> 三、 系统性能提高,代码规范: 1.在ASP页面内,凡是使用CreageObject()创建的对象(Com、Recordset等),对于这些变量,应当在该页结束进行对象释放:即 Set 对象变量名=Nothing 2.数据库打开以后在不用的时候(通常是本页最后面),需要对连接进行关闭; 3.对于SQL语句,存储过程,尽量避免使用*来取所有字段,为了代码的易读性,SQL关键字要求全部大写,字段部分小写。 例如: SELECT name,age,birthday,telephone,address FROM SchoolFellow.Address WHERE name=’xxxx’ ORDER BY birthday DESC 4.在ASP页中所有属性值尽量使用双引号括起来,特别是有属性Value的值,不要因为省时间而把双引号去掉(有的地方虽然可以去掉,程序不会出现错误,但,在有的地方去掉双引号会引来更多的麻烦。) 例如: <INPUT type=”text” id=”ClassID” name=”ClassID” value=”<%=sClassID%>”> 在这个例子中,如果把Value属性值的单引号去掉,如果数据库中出来的值有空格,空格后面还有值,结果,显示的内容只有空格前面的内容,而后面的内容就会丢失。这只是其中一种情况,其他还有很多未知情况发生。 5. 配对标签问题:对于象<a></a>之类的标签,要注意检查配对的位值,有没有结束标志。 6. 对于需要输入字符串,且需要使用SQL语句的地方,需要进行单引号处理,调用/include/CheckQ.asp中的两个方法(一个是客户端处理,一个是服务器端处理,根据需要进行调用,安全性要求高的地方多数情况下采用服务器端处理。)之一。 7. 为了提高安全性,能使用ASP编写的代码,尽量采用ASP编写,在服务器端运行,不让用户看到代码。 8. 对于安全性要求特别高的地方,建议采用三层结构:使用VB或Delphi编写商业逻辑层代码(COM),尽量把数据库的连接部分封装到组件中,提高安全性能,通过组件和数据库交流。 9. 对于网站的安全性,应该采用好的断口扫描软件,查看网站已经打开的断口,把不安全的断口给关闭。 四、 养成写开发文档的习惯: 对于每一个页面设计(前接页,后接页),包括功能说明,页面设计,页面名称,存放位置等,应当有相应的文档记载。对于发生改动的地方,需要保留原来的部分(注释或备份),并说明备份文件存放的地方,改动时间,修改人。 对于程序部分,应该有相应的设计流程,改动的时候,也需要设计改动流程图,以便以后进行对比,和查找问题所在位置,以及问题的严重性分析 |
浙公网安备 33010602011771号