******本文为本站原创,转贴时请注明:http://www.L246.com/ 作者:jony(佐尼)******
前阵子看了一篇asp静态化的文章,也就是将
http://www.dimihui.com/index.asp?id=1&dd=2伪装成:http://www.dimihui.com/?1-2.html
其实我们可以将.asp?后面的自定义为任何字符串。
这当中运用了两个函数(replace和split)。
Replace 函数可返回字符串,其中指定数目的某子字符串被替换为另一个子字符.也就是说获取相应字符串,然后将其重写(替换)为另一个字符串.例如获取aaaa,替换为:bbbb
Replace的语法
Replace(string,find,replacewith[,start[,count[,compare]]])
[img]download.asp?id=1[/img]
<%
dim jony
jony="我想我爱你."
document.write(Replace(jony,"我爱你l","我喜欢你"))
%>
这样就会输出:
我想我喜欢你.
Split 函数语法,可以用来分割字符串,将一个字符串分成多个字符串.
Split(expression[, delimiter[, count[, start]]])
Split 函数的语法有以下参数:
参数 描述
expression 必选。字符串表达式,包含子字符串和分隔符。如果 expression 为零长度字符串,Split 返回空数组,即不包含元素和数据的数组。
delimiter 可选。用于标识子字符串界限的字符。如果省略,使用空格 ("") 作为分隔符。如果 delimiter 为零长度字符串,则返回包含整个 expression 字符串的单元素数组。
count 可选。被返回的子字符串数目,-1 指示返回所有子字符串。
compare 可选。指示在计算子字符串时使用的比较类型的数值。有关数值,请参阅“设置”部分。
设置
compare 参数可以有以下值:
常数 值 描述
vbBinaryCompare 0 执行二进制比较。
vbTextCompare 1 执行文本比较。
vbDatabaseCompare 2 执行基于数据库(在此数据库中执行比较)中包含的信息的比较。
Split 的用法
返回值数组 = Split("字符串","分割符")
例如:
<%dim jony,jony1,a,b
jony="我喜欢你-我不喜欢你"
jony1=Split("jony","-")
a=jony1(0)
b=jony2(1)
document.write "a=""&a&"<br>b="&b&""
%>
这样就会输出:
a=我喜欢你
b=我不喜欢你
讲到这里,大家应该大概知道replace和split的用法了吧.
下面我们开始讲如何自定义.asp?后面的字符串
这里教大家的是将.asp?定义为任何字符串。
首先我们要获取.asp?后面的值:
用 Request.ServerVariables("QUERY_STRING")
我们来看看下面的代码
假如我的地址是:http://www.dimihui.com/?1-2-3.html
<%
if Request.ServerVariables("QUERY_STRING") <>"" then '这里是判断.asp?后面的值是否为空
id=Request.ServerVariables("QUERY_STRING")
dim id,jony,jony1,a,b,c '定义变量
jony=replace(id,".html","") '将.html替换为空
jony1=split(jony1,"-") '替换出来的字符串分割,也就是将1-2-3分割成:1 2 3
a=jony1(0) '读取第一个字符串,vbscript第一个数为0
b=jony1(1) '读取第二个字符串
c=jony1(2) '读取第三个字符串
'到这里,我们已经定义出来三个变量了.
else
response.write "" '如果.asp?后面为空的时候,输出空。
end if
%>
<p>变量c为:<%=a%>
<p>变量b为:<%=c%>
<p>变量c为:<%=c%>
我们可以利用变量a,b,c来定义我们原来的.asp?a=1&b=2&c=3
到这里。相信大家都懂得改变.asp?的字符串了吧
在这里我再教大家一些应用技巧。
我们可以将我们原来定义变量做得更加隐蔽些,然别人看不出你的网页做了多少个变量。
Split用法中的分割符可以是任意字符串,可以是标点符号,也可以说数字或字母
我们充分利用字符串组合,就可以让网友看起来像是只有一个变量。
例如:
http://www.dimihui.com/?12013a14.html 这样看是不是像只有一个字符串,其实这里我们可以定义三个字符串,具体看一下代码
<%
if Request.ServerVariables("QUERY_STRING") <>"" then
id=Request.ServerVariables("QUERY_STRING")
dim id,jony,jony1,jony2,a,b,c,d
jony=replace(id,".html","")
jony1=split(jony1,"0") '我们先分割出12这个字符串,
a=jony1(0) '读取第一个字符串,a为12
b=jony1(1) '读取第二个字符串,b为13a14
jony2=split(b,"a") '我们再分割13a14
c=jony2(0)
d=jony2(1)
'这样的话我们就得出我们要的三个变量a,c,d了
else
response.write "" '如果.asp?后面为空的时候,输出空。
end if
%>
有时我们还可以用自定义.asp?后面的字符串来忽悠别人。
例如我们利用播放列表来动态调用我们的播放文件地址,
我们可以将播放列表的地址定义为:http://www.dimihui.com/play/?file=mp3/onlyyou.mp3
这样看起来是不是像是播放文件play/mp3/onlyyou.mp3这个文件呢。
play文件夹里包含一个默认首页index.asp或default.asp,这个文件里面包含播放列表的代码。作用等于.asx文件,只是这里我们动态调用了而已。
******本文为本站原创,转贴时请注明:http://www.L246.com/ 作者:jony(佐尼)******
BY JONY 2009-6-21