asp经典中的通配符?

时间:2016-03-23 11:56:10

标签: if-statement vbscript asp-classic wildcard http-referer

我有一个使用vbscript的经典asp网站。如何检查用户是否来自我网站上的某个目录?我有这个代码

<%Response.Write(Request.ServerVariables("http_referer"))%>

写道:http://example.com/mobile/REFER.asp。我想编写一个if / else语句,首先检查引用的uri是否在http://example.com/mobile/目录中。

所以我的代码应该如下所示。但我不确定语法。是不是通配符是asp这样的东西?

<% Request.ServerVariables("http_referer") == "http://example.com/mobile/*"

最终我想用它来编写if / else语句

<% if Request.ServerVariables("http_referer") != "http://example.com/mobile/*" then 
null; elseif (screen.width <= 699) {
    document.location = "/mobile/mobile_home.asp";
  } %>

===

结束编辑@ mikeyq6的javascript示例到这个:

<script type="text/javascript">
if(document.referrer.indexOf('/mobile') > -1 &&
    screen.width <= 699) {
    document.location = "/mobile/mobile_home.asp";
}
</script>

2 个答案:

答案 0 :(得分:0)

基本上你正在处理的是一个字符串,所以你不能以这种方式使用通配符(除非你使用正则表达式,就像在这种情况下使用大锤敲击一样)

使用InStr函数检查值是否包含您要查找的字符串会更容易。例如:

<% if InStr(Request.ServerVariables("http_referer"), "http://example.com/mobile/") = 0 then
    null
elseif (screen.width <= 699) {
    document.location = "/mobile/mobile_home.asp";
} %>

此处InStr的更多信息: http://www.w3schools.com/asp/func_instr.asp

你也可以在javascript中做类似的事情:

if(window.location.href.indexOf("http://example.com/mobile/") > -1 &&
    screen.width <= 699) {

    document.location = "/mobile/mobile_home.asp";
}

请注意,我也简化了if...else。你不需要两种情况。

答案 1 :(得分:0)

你知道你正在寻找的固定网址的长度,所以看看引用者的前n个字符是否与之匹配:

const BASE_DIR = "http://example.com/mobile/"

dim referer: referer = lcase(Request.ServerVariables("http_referer"))

if left(referer, len(BASE_DIR)) = BASE_DIR then
    ...
else
    ...
end if