asp获取URL参数的几种方法分析总结 原创
程序员文章站
2022-05-03 12:34:02
需要用到这个功能,没怎么测试呢,测试后给具体代码 假如地址是: http://dxy.com:8082/test/geturl.asp?param-vr52tmx3syn0...
需要用到这个功能,没怎么测试呢,测试后给具体代码
假如地址是:
http://dxy.com:8082/test/geturl.asp?param-vr52tmx3syn03777.html
方法一:简单,得不到参数,只有一个虚拟路径
geturl =request("url") '这个因为我们没有url=什么字样所以直接pass掉
方法二:得到整个url,得到参数
'得到当前页面的地址
function geturl()
on error resume next
dim strtemp
if lcase(request.servervariables("https")) = "off" then
strtemp = "http://"
else
strtemp = "https://"
end if
strtemp = strtemp & request.servervariables("server_name")
if request.servervariables("server_port") <> 80 then strtemp = strtemp & ":" & request.servervariables("server_port")
strtemp = strtemp & request.servervariables("url")
if trim(request.querystring) <> "" then strtemp = strtemp & "?" & trim(request.querystring)
geturl = strtemp
end function
经测试这个代码得到的路径为:
/test/geturl.asp?param-vr52tmx3syn03777.html=
方法二:得到虚拟路径,得到参数
private function geturl()
dim scriptaddress,m_itemurl,m_item
scriptaddress = cstr(request.servervariables("script_name")) '取得当前地址
m_itemurl = ""
if (request.querystring <> "") then
scriptaddress = scriptaddress & "?"
for each m_item in request.querystring
if m_item = "page_num" then exit for '此处的作用就是过滤掉page_num这个页次的参数(该参数是在page_turn.asp中自行设置的,根据个人设定而变),否则每次翻页都会叠加这个参数,虽然不影响功能,但总归不太好吧~~
if instr(page,m_item)=0 then
m_itemurl = m_itemurl & m_item &"="& server.urlencode(request.querystring(""&m_item&""))
else
m_itemurl = m_itemurl & m_item &"="& server.urlencode(request.querystring(""&m_item&"")) & "&"
end if
next
else
scriptaddress = scriptaddress & "?"
end if
geturl = scriptaddress & m_itemurl
end function
上面的代码得到的地址为
http://dxy.com:8082/test/geturl.asp?param-vr52tmx3syn03777.html
基本上差不多
如果只是为了得到?号后面的东西,我们可以用下面的代码
response.write replace(request.querystring,".html","")
得到的就是param-vr52tmx3syn03777是不是满足了我们的需要了呢
ps:上面的所有情况只是针对纯asp,如果结合urlrewrite的话,功能会有所增强,搜索的友好型,也会加强
假如地址是:
http://dxy.com:8082/test/geturl.asp?param-vr52tmx3syn03777.html
方法一:简单,得不到参数,只有一个虚拟路径
复制代码 代码如下:
geturl =request("url") '这个因为我们没有url=什么字样所以直接pass掉
方法二:得到整个url,得到参数
复制代码 代码如下:
'得到当前页面的地址
function geturl()
on error resume next
dim strtemp
if lcase(request.servervariables("https")) = "off" then
strtemp = "http://"
else
strtemp = "https://"
end if
strtemp = strtemp & request.servervariables("server_name")
if request.servervariables("server_port") <> 80 then strtemp = strtemp & ":" & request.servervariables("server_port")
strtemp = strtemp & request.servervariables("url")
if trim(request.querystring) <> "" then strtemp = strtemp & "?" & trim(request.querystring)
geturl = strtemp
end function
经测试这个代码得到的路径为:
/test/geturl.asp?param-vr52tmx3syn03777.html=
方法二:得到虚拟路径,得到参数
复制代码 代码如下:
private function geturl()
dim scriptaddress,m_itemurl,m_item
scriptaddress = cstr(request.servervariables("script_name")) '取得当前地址
m_itemurl = ""
if (request.querystring <> "") then
scriptaddress = scriptaddress & "?"
for each m_item in request.querystring
if m_item = "page_num" then exit for '此处的作用就是过滤掉page_num这个页次的参数(该参数是在page_turn.asp中自行设置的,根据个人设定而变),否则每次翻页都会叠加这个参数,虽然不影响功能,但总归不太好吧~~
if instr(page,m_item)=0 then
m_itemurl = m_itemurl & m_item &"="& server.urlencode(request.querystring(""&m_item&""))
else
m_itemurl = m_itemurl & m_item &"="& server.urlencode(request.querystring(""&m_item&"")) & "&"
end if
next
else
scriptaddress = scriptaddress & "?"
end if
geturl = scriptaddress & m_itemurl
end function
上面的代码得到的地址为
http://dxy.com:8082/test/geturl.asp?param-vr52tmx3syn03777.html
基本上差不多
如果只是为了得到?号后面的东西,我们可以用下面的代码
复制代码 代码如下:
response.write replace(request.querystring,".html","")
得到的就是param-vr52tmx3syn03777是不是满足了我们的需要了呢
ps:上面的所有情况只是针对纯asp,如果结合urlrewrite的话,功能会有所增强,搜索的友好型,也会加强