ASP与JS结合实现二级域名转向的调试分析
本文分析一段结合ASP后端与前端JavaScript实现的二级域名转向代码。代码通过ADODB读取数据库UserInfo表,利用JS解析URL子域名并匹配数据库记录。文中指出原代码存在逻辑分支混乱、变量未定义及转向实现方式(Frameset)过时等问题,导致程序虽调试通过却无法正确执行转向,提供了详细的代码逻辑梳理与修正方向。
作者已成功运行基于ASP的二级域名转向系统,但在尝试引入前台JavaScript配合ASP的转向方案时遇到了问题。尽管程序经过调试未发现语法错误,但实际并未执行预期的域名跳转,作者希望查明具体原因。
<%
ASP后端数据库连接与数据读取
Dim whkDbq,whkSql,whkRs,whkCount
Set whkConn = Server.CreateObject("ADODB.Connection")
whkDbq = Server.MapPath("SqlTaoFun.mdb")
whkConn.Open"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&whkDbq
whkSql = "select bh,id from UserInfo where State='3'"
Set whkRS = Server.CreateObject("ADODB.Recordset")
whkRs.open whkSql,whkConn,3,3
%>
前端JavaScript域名解析与匹配逻辑
<script language="javascript">
var records = [],whkCoun = 0,whkFlag = 0;
<%
Do while not whkRs.Eof
%>
records[whkCoun] = new Array("<%=whkRs("bh")%>","<%=whkRs("id")%>");
document.write("whkCoun:"+whkCoun+" records["+whkCoun+"]:"+records[whkCoun][0]+records[whkCoun][1]+"<br>");
whkCoun = whkCoun + 1;
<%
whkRs.MoveNext
'whkConn = whkConn + 1
Loop
'Response.End()
%>
whkUrl = document.location.href;
document.write(whkUrl)
whkUrl = whkUrl.replace("http://","");
whkUrl = whkUrl.substring(0,whkUrl.indexOf("/"));
document.write("<br>whkUrl:"+whkUrl);
if (whkUrl.toLowerCase() != "www.taofun.cn")
{
var whkFirstP = whkUrl.indexOf("."),whkEndP = whkUrl.lastIndexOf("."),gotoUrl;
if ((whkFirstP == whkEndP) && ((whkFirstP != -1) || (whkEndP != -1)))
{
whkFlag = 0;
window.alert("taofun.cn");
//window.location.href = "http://www.taofun.cn/"
}
else
{
if (whkUrl == "localhost")
{
whkFlag = 0;
window.alert("localhost");
}
else
{
var whkUrl2 = whkUrl.substring(0,whkUrl.indexOf("."));
document.write("<br>whkUrl2:"+whkUrl2);
if (whkUrl2.toLowerCase() == "www")
{
if (whkUrl.indexOf(".",whkFirstP+1) == whkUrl.lastIndexOf(".",whkEndP-1))
for(i=0;i<whkCoun;i++)
{
document.write("<br>这里是读取的bh:"+records[i][0]);
if (records[i][0] == whkUrl.substring(whkFirstP+1,whkUrl.indexOf(".",whkFirstP+1)))
{
whkFlag = 1;
gotoUrl = "http://www.taofun.cn/show/Shop.asp?id="+records[i][1];
window.alert("找到"+records[i][0]+"的二级域名。");
break;
}
}
else
{
whkFlag = 0;
window.alert("输的太多了!");
//window.location.href = "http://www.taofun.cn/";
}
}
else
{
whkFlag = 0;
window.alert("开头请输www");
//window.location.href="http://www.taofun.cn/";
}
}
}
}
else
{
whkFlag = 0;
window.alert("去网站首页!");
//window.location.href = whkUrl;
}
document.write("<br>最后结果:"+gotoUrl+whkwhkwhk);
if (whkFlag == 1)
{
document.write("<frameset cols=\"*\"><frame frameborder=\"0\" scrolling=\"auto\" src=\""+gotoUrl+"\"><\/frameset>" );
}
</script>
JS语法错误会阻止加载吗?区分SyntaxError与资源加载失败
2026-11-05 16:08:46
JavaScript常见SyntaxError语法错误排查与修复方法
2026-11-05 13:58:44
JS中slice、substring和substr截取字符串的区别
2026-11-05 13:43:47
JS 转 TS 手动迁移最佳实践:从配置 tsconfig 到消除 any 类型
2026-11-05 11:53:32
为什么JS数组push后得到的是数字而不是数组?
2026-11-05 09:59:18
