用ASP来做301永久重定向

BLOG换程序了,简单地把以前的一些链接做了一个重定向(Redirect),用的是Response.Redirect,在ASP中,这种方式是302跳转:

302重定向是临时性转移,301是永久转移,很多网站都不太注意这两个跳转的区别,而搜索引擎在对302和301跳转时会进行区别对待。使用301跳转后,搜索引擎会把旧地址下原有的外部链接和数据转移到新的地址下面,而302重定向则不会如此。

在ASP中可以使用如下方法来进行301重定向:

Response.Status = "301 Moved Permanently"
Response.AddHeader "Location", NewUrl
Response.End()

可以看到301的结果如下:

FSO写UTF-8编码文件

昨天给aw写一个生成天气预报的xml文件的程序,考虑到通用性,于是选择utf-8编码,我也比较偏好这个编码。最先想到用FSO来写这个xml文件,后来却发现生成的xml文件不能正常显示,仅仅是因为编码的原因。用记事本打开生成的xml文件,另存为utf-8编码的xml文件即可正常显示。于是在网上搜索了一下,结果发现很多人说FSO只能写ANSI编码的文件,不能写utf-8格式的文件,并且只能读写文本文件。很多人都选择用ADODB.STREAM对象来替代FSO对象,因为STREAM类有LOADFROMFILE和SAVETOFILE方法.并且有一个至关重要的属性CHARSET,这是FSO没有的。有人给出了样例程序:

‘————————————————-

Google站内搜索插件


发现有人用百度Google对我的Blog进行站内搜索,但用的域名是 blog.afdream.com,很不巧的是我前几天刚刚取消了这个域名和主机的绑定,已改为URL转发,搜到的结果页面现在是无法打开的。鉴于此,我开始考虑借助于Google或者百度做一个站内搜索(虽然自带了一个站内搜索,但总觉功能太简单,不过可以很容易搜到你要的东西),今天下午于是就开始动手做这个东西。测试的过程中才真的注意到Google也有类似百度的右侧广告,不过我这个搜索页面里已经去掉了。

不过这个东西基本没什么技术含量,数据全部是向Google“借”的,有兴趣者可以下载下去自己用,把文件里面的一行代码:

Const site=”site:fdream.net”

替换成你自己的blog的域名就OK了!

首页调用代码:


下载地址:http://www.afdream.com/Bak/search.rar…

FSO文件对象介绍及常用函数

FSO的意思是FileSystemObject,即文件系统对象。FSO对象模型包含在Scripting 类型库 (Scrrun.Dll)中,它同时包含了Drive、Folder、File、FileSystemObject和TextStream五个对象,用来操作文件和文件夹十分方便。

FSO文件(File)对象属性

属 性 说 明
DateCreated 返回该文件夹的创建日期和时间
DateLastAccessed 返回最后一次访问该文件的日期和时间
DateLastModified 返回最后一次修改该文件的日期和时间
Drive 返回该文件所在的驱动器的Drive对象
Name 设定或返回文件的名字
ParentFolder 返回该文件的父文件夹的Folder对象
Path 返回文件的绝对路径,可使用长文件名
ShortName 返回DOS风格的8.3形式的文件名
ShortPath 返回DOS风格的8.3形式的文件绝对路径
Size 返回该文件的大小(字节)…

禁止某些IP访问网站

偶尔会有一些很令人讨厌的人访问你的网站,没办法,封IP吧……

一个简单的封少量IP的ASP代码:

<%
Dim IP,IPString,VisitIP
‘要禁止的IP地址
IPString=”|219.142.118.71|127.0.0.1|”
‘获取IP地址
IP = Request.ServerVariables(“HTTP_X_FORWARDED_FOR”)
If IP = “” Then
IP = Request.ServerVariables(“REMOTE_ADDR”)
End If
VisitIP=”|”&IP&”|”
If instr(1,IPString,VisitIP)0 Then
response.write “你的IP被禁止”

用ASP为图片加水印

现在大部分网站都给图片加上自己的水印,也有不少人问用ASP打水印的方法。用ASP为图片加水印有一个很好用的组件—— wsImage(貌似最新版本是3.5),还是国人开发的^_^

首先要注册组件:在命令提示符下输入”regsvr32 [Dll路径]” 就可以了。

添加文字水印的方法:

AddTxtMark 方法

AddTxtMark是在原图片上添加文字水印,并输出新的图片文件.

语法

AddTxtMark TargetFile, strText, TextColor, lTop, lLeft, nTxtOpacity, nShadeColor, nShadeOpacity,
nShadeAngle, nShadeDistance , nShadeBlur

TargetFile 返回新的图片文件的路径
strText 要添加的文字;
TextColor 要添加的文字的颜色;
lTop 要添加的文字在原图片上的顶边距;
lLeft 要添加的文字在原图片上的左边距。…

ASP处理XML文档

这个学期前期写的一段代码,本来是想自己做一个XNA(XML聚合)的,由于种种原因,做了一部分就终止了,这是其中处理XML文档的一部分。

‘xml加载,其中 linkurl 为表示 XML 文档的 URL 的变量
Set http=Server.CreateObject(“Microsoft.XMLHTTP”)
http.Open “GET”,linkurl,False
http.send

Set xmlDoc=Server.CreateObject(“Microsoft.XMLDOM”)
xmlDoc.Async=False
xmlDoc.ValidateOnParse=False
xmlDoc.Load(http.ResponseXML)

‘xml结点设置

set root = xmlDoc.documentElement

‘根据结点选取数据,兼容XML

也讨论一下ASP在线人数统计(一)

ASP中统计在线人数的方法花样繁多,我也搞不清楚有几种 ^_^,偶这里介绍三种先,如有错误,欢迎各位批评指正,还有好方法,敬请补充!

首先介绍一种最简单的方法,利用 Application、 session 和 Global.asa ,因为当用ASP制作的网页都存放与WWW服务器的基点目录并且WWW服务器启动之后,每当有对ASP文件的HTTP请求时,服务器都会去读取基点目录下的Global.asa文件。所以可以在 Global.asa 文件中包含如下代码:

‘ 当服务器开启时,设置用户计数器为0
Application(“ActiveUsers”) = 0
End Sub
Sub Session_OnStart

‘ 设置Session对象的有效时间为20分钟(也可以更长,但是越长对服务器的资源占用越多)
Session.Timeout = 20

也讨论一下ASP在线人数统计(二)

第三种方法和这个类似,只不过是根据用户的 IP 来判断在线人数,这样就避免了三面的特殊情况,而且不需要用 session 哦!
首先还是建一个数据库:count.mdb,包含一个表:count,表中字段为:

ID 自动编号
ip 文本
posttime 日期/时间

具体实现代码如下,文件名为 online.asp:
[#afdream.com#]

<%
‘———定义变量
dim rs
dim ip
dim timeouted
dim x
dim conn
dim dbpath
‘———定义变量结束

‘———建议数据库链接
set conn=server.createobject(“adodb.connection”)
DBPath = Server.MapPath(“count.mdb”)

ASP中RS.OPEN后参数的意义

这是在链接数据库的时候使用的东东,常用的也就几个参数,也少有人去仔细研究这些参数了,呵呵~

RS.OPEN SQL,CONN,A,B

A:

ADOPENFORWARDONLY(=0)
只读,且当前数据记录只能向下移动

ADOPENKEYSET(=1)
只读,当前数据记录可自由移动

ADOPENDYNAMIC(=2)
可读写,当前数据记录可自由移动

ADOPENSTATIC(=3)
可读写,当前数据记录可自由移动,可看到新增记录

B:

ADLOCKREADONLY(=1)
缺省锁定类型,记录集是只读的,不能修改记录

ADLOCKPESSIMISTIC(=2)
悲观锁定,当修改记录时,数据提供者将尝试锁定记录以确保成功地编辑记录。只要编辑一开始,则立即锁住记录。

ADLOCKOPTIMISTIC(=3)
乐观锁定 ,直到用Update方法提交更新记录时才锁定记录。

ADLOCKBATCHOPTIMISTIC(=4)
批量乐观锁定,允许修改多个记录,只有调用UpdateBatch方法后才锁定记录。…