我有一个使用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>
答案 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