|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
缺点:正版成本价格贵(盗版就不说了)、不够安全,大多数服务器用windows系统,没有linux安全当你用ASP编写服务器端使用程序时,必需依托ActiveX组件来壮大Web使用程序的功效,比如:你必要毗连数据库,对数据库举行在线操纵等等。
上两篇中作者给人人先容了ADRotator、DatabaseAccess等组件的利用办法,明天我们接着来看看别的的一些ASP经常使用组件。
1、BrowserCapabilities组件尽人皆知,并非一切扫瞄器都撑持当今Internet手艺的各个方面。有一些特征,某些扫瞄器撑持而另外一些扫瞄器却不撑持,如:ActiveX控件、影象流、静态HTML、Flash和剧本程序等。利用ASP的BrowserCapabilities组件,就可以够计划“智能”的Web页,以合适扫瞄器功能的格局出现内容。BrowserCapabilities组件可以创立一个BrowserType工具,该工具供应带有客户端收集扫瞄器的功效申明的用户剧本。该组件之以是能辨认客户扫瞄器的版本等信息,次要是由于当客户扫瞄器向服务器发送页面哀求时,会主动发送一个UserAgentHTTP题目,该题目是一个声明扫瞄器及其版本的ASCII字符串。BrowserCapabilities组件将UserAgent映照到在文件Browscap.ini中所说明的扫瞄器,并经由过程BrowserType工具的属性来辨认客户扫瞄器。若该工具在browscap.ini文件中找不到与该题目婚配的项,那末将利用默许的扫瞄器属性。若该工具既未找到婚配项且browscap.ini文件中也未指定默许的扫瞄器设置,则它将每一个属性都设为字符串"UNKNOWN"。在默许情形下,browscap.ini文件被寄存在WINDOWSSYSTEMINERSRV(假如是95/98+PWS4)或NTSYSTEM32INERSRV(假如是NT)目次中,你能够本人编纂这个文本文件,以增加本人的属性大概依据最新公布的扫瞄器版本的更新文件来修正该文件。请看以下checkCookie()历程,利用BrowserCap工具的Cookie属性来判别客户端扫瞄器是不是撑持Cookie,并前往信息:
<%
SubcheckCookie()
SetBrowserCap=Server.CreateObject("MSWC.BrowserType")
ifBrowserCap.Cookie=Truethen
response.write"你的扫瞄器撑持Cookie!"
else
response.write"对不起,你所利用的扫瞄器不撑持Cookie!"
endif
endSub
%>
有关BrowserCapabilities组件的具体信息,请拜见静态网站计划十八般技艺--ASP篇(2)。
2、FileAccess组件假如你的网龄充足年夜的话,你必定见过“恐龙时期”的CGI留言簿,那是WEB留言簿最早的雏形。当时候在基于Internet的WEB使用程序中毗连服务器后端数据库还好不容易,因而留言簿中的汗青信息并非同现在一样存储在后端数据库中。那末这些数据事实是保留在那里的呢?谜底就是“文本文件”,CGI程序能够将从客户端吸收的信息写进一个寄存在服务器真个文本文件中,该文件能够是HTML文件或TXT等文件,如许就使得程序员们能够欠亨过同数据库毗连就能够将客户信息保留上去,可是写此类CGI程序甚是啰嗦,上面列出了一个此类程序的最复杂的样本:
#!/usr/local/bin/perl
#PerlLocationoneyourserver
print"Content-type:text/plain
";
if($ENV{REQUEST_METHOD}eq"POST"){
read(STDIN,$buffer,$ENV{CONTENT_LENGTH});
}elsif($ENV{REQUEST_METHOD}eq"GET"){
$buffer=$ENV{QUERY_STIRNG};
}
@pairs=split(/&/,$buffer);
foreach$pair(@pairs){
($name,$value)=split(/=/,$pair);
$value=~tr/+//;
$value=~s/%([a-fA-F0-9][a-fA-f0-9])/pack("C",hex($1))/eg;
$FORM{$name}=$value;}
$file_name="guestbook.txt";#Filename
#详细内容
open(FILE,">>$file_name")||die"翻开文件毛病";
printFILE"纪录工夫":$date
";
printFILE"姓名":$FORM{name}";
printFILE"单元":$FORM{company}
";
printFILE"德律风":$FORM{phone}
printFILE"地点":$FORM{address}
";
printFILE"邮编":$FORM{zip}
printFILE"邮件地点":$FORM{email}
";
printFILE"前往定见":$FORM{content}
close(FILE)
人人能够感到到,与ASP比拟此类CGI程序的可读性和易操纵性都较差。那末你必定想问ASP是不是也能间接在服务器上写文件呢?谜底固然是一定的。可是伶俐的伴侣大概会想到,既然ASP同WEB数据库的毗连云云便利,我们又何需再将客户信息写在文本文件中呢,ASP的这个功效岂不是多此一举?切实其实,关于那些我们罕见的留言簿、BBS等WEB使用程序而言,不管是在程序的实行效力仍是易用性上,我们都不成能再用写文本文件来替换数据库,可是在某些WEB使用范畴里写文本文件既是一种标准也是一种绝对数据库而较便利的办法。假如你对NT较熟习的话,你必定晓得NT具有十分壮大的平安机制,它能够将几近一切的服务器操纵和毗连的信息主动保留在一个后缀名为.log的文件中,实在这类手艺也完整能够被使用在WEB上,用来纪录一些的客户上岸信息。上面的这段程序恰是使用ASP读写文本文件的特征,在一个WEBBBS程序中创立主动纪录每一个用户讲话纪录的功效。
<%
Setfs=CreateObject("Scripting.FileSystemObject")
ForReading=1
以只读形式翻开文件。不克不及对此文件举行写操纵。
ForAppending=8
翻开文件并在文件开端举行写操纵。
TristateUseDefault=-2
TristateTrue=-1
TristateFalse=0
-----------写进体系log入手下手--------
servermap=server.MapPath("bslog")
映照体系物理路径
temp=servermap&""&year(date)&month(date)&""
猎取体系物理路径和工夫,并以此作为log文件寄存的物理路径
ifNotfs.FolderExists(temp)then
fs.CreateFolder(temp)
endif
检测是不是存在文件夹,不然主动创立
dimsyslog
dimtempname
tempname=date
syslog=temp&tempname&".log"
文件名为e:bslog月份月日.log
li=user&"&"&Now&"&"&Request.ServerVariables("REMOTE_ADDR")&"&"&tempfile&"&"&letter&"&"&title
log文件纪录的格局为:用户名&发信工夫&用户ip&文件路径&信区&函件题目
iffs.FileExists(syslog)then
Setss=fs.OpenTextFile(syslog,ForAppending,true)
else
setss=fs.CreateTextFile(syslog,ForWriting,false)
endif
检测log文件是不是存在,假如存在则追加文件内容,反之则间接写文件
ss.WriteLine(li)
ss.Close
-----------log文件写进停止---------
%>
假如你没有完整看懂下面的这段程序,就请听作者渐渐道来。FileAccess组件供应了可用来会见盘算机文件体系的办法和属性。我们可使用FileAccess组件创立FileSystemObject工具,以上程序的第一句就是使用FileAccess组件创立了一个名为fs的工具实例。在工具被创立后,你能够经由过程它会见文件,该工具没有属性,它独一的意义就是创立、翻开或读写文本文件。FileSystemObject工具有两种最经常使用的办法,一种用来创立文件,另外一种是用来翻开并读写文本文件。CreateTextFile办法取得你指定的文件名并创立该文件,它前往一个TextStream工具,你能够用该工具在文件被创立后操纵该文件,CreateTextFile办法的语法以下:
SetobjTextStream=FileSystemObject.CreateTextFile(Filename,[Overwrite],[Unicode])
上面作者给人人注释一下CreateTextFile办法的参数
1、Filename包括文件路径名的字符串,能够是文件的全路径名,包含驱动器名和目次名,大概也能够只是文件名,假如只包括文件名的话,文件将被创立在站点的根目次下。
2、Overwrite布尔量,设置成False时能够避免FileSystemObject工具在创立一个新文件时删除已存在的文件,该参数是可选的,假如没有赋值体系默许为true,具有不异文件名的已有文件会被删失落。
3、Unicode可选参数。布尔值指明是不是以Unicode或ASCII文件格局创立文件。假如以Unicode文件格局创立文件,则该值为True;假如以ASCII文件格局创立文件,则该值为False。假如省略此部分,则假定创立ASCII文件。
在后面的程序中我们用setss=fs.CreateTextFile(syslog,ForWriting,false)来在log文件不存在的情形下创立文件并对文件举行写操纵,这里的“ForWriting”暗示写文件。
与CreateTextFile办法分歧,OpenTextFile办法用来取得你指定的文件名并翻开该文件,使用它所带的参数我们能够对文件举行各类分歧的操纵,和CreateTextFile办法一样,OpenTextFile办法前往一个TextStream工具,使得你能够在文件被翻开后操纵该文件。OpenTextFile办法的语法以下:
SetobjTextStream=FileSystemObject.OpenTextFile(Filename,[IOmode],[Create],[Format])
参数申明以下:
1、Filename必需的变量,同CreateTextFile的filename
2、IOmode可选的常量,取值为以下两个常数之一ForReading或ForAppending,假如mode为1,文件以只读体例翻开,假如为8,则文件以追加的体例翻开。
3、Create可选的布尔量,指定假如你想翻开的文件不存在是做甚么操纵,假如其值为True,当文件不存在时就主动创立一个空的文件。假如为False,就会在文件没找到时发生一个堕落信息,其默许值是False,倡议将其设为True,以免在翻开文件时反省是不是堕落。
4、Format可选值,能够选择三种Tristate值分离指定文件的格局,-2、-1、和0分离对应于体系缺省、unicode和ASCII。
在翻开或创立了文本文件后,就失掉一个TextStream工具,该工具有一个光标,就好象是在字处置程序中的光标一样,指出接上去要敲进的字符将呈现的地位,它同时也指出你要读取的字符的地位。不克不及经由过程CreatObject来创立一个TextStream工具,失掉TextStream工具的独一办法是如前所述的用FileSystemObject工具翻开一个存在的文本文件大概创立一个新的文件。
上面列出了TextStream工具的属性和办法
TextStream.AtEndOfLine只读布尔量,当光标在以后行的开端时,其值为true,反之则为false
TextStream.AtEndOfStream只读布尔量,假如光标在流的开端时,其值为true,不然为alse
TextStream.Column只读的整数,统计从行首到以后光标地位之间的字符数
TextStream.Line只读的整数,指明光标地点行在全部文件中的行号
TextStream.close()封闭流和对应的文本文件
TextStream.read(Num)指定从光标确当前地位入手下手从文本文件中读取必定数量的字符
TextStream.readall()将全部流读进一个字符串中
TextStream.readline()将一整行的字符读进一个字符串中
TextStream.write(text)将一个字符串写进流中
TextStream.writeline()将一个文本串写进流中
TextStream.skip(Num)在流中,将光标的地位挪动必定数量的字符串长度
TextStream.skiplines()在流中,将光标挪动必定数量的行数
TextStream.writeblank将必定数量的空行写进流中
lines(num)
信任人人如今已能够感到到ASPFileAccess组件的壮大功效了,实在它远不单单能够写一些log文件,经由过程它你乃至能够绝不吃力的远程主动更新你的网站,你只需把流动格局的文本文件传送到远真个服务器上,经由过程FileAccess组件读取文件,并主动天生全新HTML页面便可,而不用再辛辛劳苦地一个一个地更新HTML文件。假如你有乐趣,你完整能够用ASP的FileAccess组件写一个本人的全主动HTML天生器,充实享用保护网站的超前轻松感。[img=1border=0style=,1src=]http://www.ckuyun.com/[/img]
源代码保护方面其实现在考虑得没那么多了..NET也可以反编译.ASP写得复杂的话别人能看得懂的话.他也有能力自己写了.这方面担心的倒不太多.纵观现在网上可以下载的那些所谓BBS还有什么网站等等的源代码 |
|