很多站长写程序时,对于已经打开的对象,数据库连接,总是不冷不热,不及时关闭;
孰知,系统资源就是这样的被消耗殆尽,导致程序假死,失去响应;
尤其对于 response.redirect 转向语句 前后关闭对象、连接,更是模糊不清。

flymorn以实际测试为例子,以用于一个网站 重庆租房网 的调试:
请注意:
response.redirect 后所有的语句都不会执行,可以测试如下:

<%
response.redirect "http://www.023ff.com"
dim fso,fout
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set fout = fso.CreateTextFile(Server.MapPath("我被执行啦.txt"))
fout.close
%>

上面这段代码执行后,同目录下将不会出现《我被执行啦.txt》这个文件;
如果把response.redirect这行注释掉,就会出现了。
这很好的证明了我的想法。

对于这个问题的处理方法,可以如下处理:
把response.redirect 语句放最后,中间采用标志符:

<%
dim rs,sql,zz
Set rs = Server.CreateObject ("ADODB.Recordset")
sql="select * from users where name1='"&name1&"'"
rs.Open sql,conn,1,1
if rs.eof and rs.bof then
response.write ""
else
if rs("pwd1")=pwd1 then
response.cookies("usok")=name1
zz=1 '标志符置位
else
response.write ""
end if
end if

rs.close '关闭对象
set rs=nothing
conn.close '关闭连接
set conn=nothing

'登录成功后转向
if zz=1 then '这句放最后
response.redirect "http://www.023ff.com"
end if
%>

对于 js 采用的判断,则不影响其后的执行,如:

<%
response.write ""
'response.end '如果有这行,则后面的语句不执行;

dim fso,fout
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set fout = fso.CreateTextFile(Server.MapPath("我被执行啦.txt"))
fout.close
%>