Sub checkCookie()
Set BrowserCap=Server.CreateObject("MSWC.BrowserType")
if BrowserCap.Cookie=True then
response.write "你的浏览器支持 Cookie!"
else
response.write "对不起,你所使用的浏览器不支持 Cookie!"
end if
end Sub
%>
有关 Browser Capabilities 组件的详细信息,请参见动态网站设计十八般武艺 --ASP 篇 (2)。
二、 File Access 组件如果你的网龄足够大的话,你一定见过恐龙时代的 CGI 留言簿,那是 WEB 留言簿最早的雏形。那时候在基于 Internet 的 WEB 应用程序中连接服务器后端数据库还十分困难,因此留言簿中的历史信息并不是同如今一样存储在后端数据库中。那么这些数据究竟是保存在哪里的呢?答案就是文本文件, CGI 程序可以将从客户端接收的信息写进一个存放在服务器端的文本文件中,该文件可以是 HTML 文件或 TXT 等文件,这样就使得程序员们可以不通过同数据库连接就可以将客户信息保存下来,但是写此类 CGI 程序甚是烦琐,下面列出了一个此类程序的最简单的样本 :
#!/usr/local/bin/perl
# Perl Location one your server
print "Content-type: text/plainnn";
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-f A-F 0-9][a-f A-f 0-9])/pack("C",hex({GetProperty(Content)}))/eg;
$FORM{$name}=$value;}
$file_name="guestbook.txt";#File name
#具体内容
open(FILE,">>$file_name") die "打开文件错误";
print FILE "记录时间":$date nn";
print FILE "姓名":$FORM{'name'}";
print FILE "单位":$FORM{'company'}n";
print FILE "电话":$FORM{'phone'}
print FILE "地址":$FORM{'address'}n";
print FILE "邮编":$FORM{'zip'}
print FILE "邮件地址":$FORM{'email'}n";
print FILE "返回意见":$FORM{'content'}
close (FILE)
大家可以感觉到,与 ASP 相比此类 CGI 程序的可读性和易操作性都较差。那么你一定想问 ASP 是否也能直接在服务器上写文件呢?答案当然是肯定的。但是聪明的朋友可能会想到,既然 ASP 同 WEB 数据库的连接如此便捷,我们又何需
作该文件。 OpenTextFile 方法的语法如下 :参数说明如下 :
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)1、 Filename 必须的变量,同 CreateTextFile 的 filename
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)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,否则为 false
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)
相信大家现在已经可以感觉到 ASP File Access 组件的强大功能了,其实它远不仅仅可以写一些 log 文件,通过它你甚至可以毫不费力的远程自动更新你的网站,你只要把固定格式的文本文件传送到远端的服务器上,通过 File Access 组件读取文件,并自动生成全新 HTML 页面即可,而不必再辛辛苦苦地一个一个地更新 HTML 文件。如果你有兴趣,你完全可以用 ASP 的 File Access 组件写一个自己的全自动 HTML 生成器,充分享受维护网站的超前轻松感。