|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ASP由于使用了COM组件所以它会变的十分强大,但是这样的强大由于WindowsNT系统最初的设计问题而会引发大量的安全问题。只要在这样的组件或是操作中一不注意,哪么外部攻击就可以取得相当高的权限而导致网站瘫痪或者数据丢失;include|静态能够静态Include文件吗?
2001年4月23日
甚么是静态Include?
解答
我们从一个案例谈起:
<%
失掉用户地点的省分
DimProvince
Province=Request.form("Province")
上面显现这个省分相干的信息
%>
<!--#includevirtual="/Province/<%=Province%>"-->
你以为下面的代码能够事情吗?不!复杂地利用ASP来到达静态包括,你不克不及到达你想要的效果。为何?由于:Include命令先于ASP代码而失掉实行,以是,下面的代码并没有依照作者的志愿,先失掉用户地点的省分,再包括这个省分的信息!
假如你的确必要静态包括,你能够如许做:
<%
SelectCaseProvince
Case1:%>
<!--#includefile="1.asp"à
<%Case2:%>
<!--#includefile="2.asp"à
<%Case3:%>
<!--#includefile="3.asp"à
<%EndSelect%>
应当说,这段代码能够失掉你想要的了局。可是,因为你的用户大概来自于33个省,你岂非包括33个文件?出格要申明的是,SSInc.dll是不晓得你事实必要哪一个包括文件的(现实上,这时候候Province还没有值),以是,她把一切的文件都包括出去了!你能够设想,这时候候的文件有多年夜!然后,ASP.DLL会往扫描这个文件中的ASP代码,然后实行!
以是,每当如许的时分,你应当思索其他的思绪,好比数据库,大概接纳FileSystemObject。
如何静态Include文件?
解答
ASP程序员常常面对的最年夜应战之一是静态Include文件。因为#include在ASP代码实行之前处置,以是,看起来,动if/else的头脑是不成能的。
真是如许吗?
依据你利用Include的目标,和你将Include的文件数量,利用if/else大概能够办理成绩。但这相对不是任什么时候候能够见效的,并且也不是一种无效的办理举措,由于你必要做很多的手工事情。
假定有两个样本HTM文件,1.htm和2.htm,为简化起见,假定文件的内容以下:
<!--1.HTM:-->
<fontcolor=#ff0000>Thisis1.htm</font>
<!--2.HTM:-->
<fontcolor=#0000ff>Thisis2.htm</font>
如今我们来尝尝静态Include:
<%
ifrequest.querystring(‘param‘)=‘2‘then
%>
<!--#includefile=‘2.htm‘-->
<%
else
%>
<!--#includefile=‘1.htm‘-->
<%
endif
%>
请注重:下面的两个#include实践上都失掉了处置。你能够实践运转一下,看看效果:http://localhost/Test.asp?param=1
http://localhost/Test.asp?param=2
http://localhost/Test.asp
下面我们是把一个querystring作为前提。你还能够把工夫、日期、扫瞄器版本等作为前提。可是,前提越庞大,这类办法的效力越差。上面供应了别的一种思绪:
<%
ifrequest(‘param‘)=‘2‘then
filespec=‘2.htm‘
else
filespec=‘1.htm‘
endif
filespec=server.mapPath(filespec)
scr=‘scripting.fileSystemObject‘
setfs=server.createobject(scr)
setf=fs.openTextFile(filespec)
content=f.readall
setf=nothing
setfs=nothing
response.write(content)
%>
在IIS5.0/ASP3.0中,有两种新的办法来撑持“静态包括”:
<%
server.transferfilename
server.executefilename
%>
假如恰好利用的是IIS5.0和ASP3.0,那末Ok!可是IIS5.0必要运转在Windows2000上。</p>使用filesystemobject,可以对服务器上的文件进行操作,浏览、复制、移动、删除等。有ado的支持,asp对数据库的操作非常得心应手。你甚至可以像使用本地数据库那样,管理远程主机上的数据库,对表格、记录进行各种操作。 |
|