X@X.X域名转向的实现

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

当你看到csdn@csdn.com时,你肯定把这当作电子邮件地址,其实这个不一定是邮件地址,有可能是域名。现在有越来越多的人开始使用这个形式的地址了。初看起来,你不要以为这个是一个什么非常了不起的技术,其实是一个非常简单的东西。

我们如果要在IE中访问FTP,会用到ftp://user:pwd@pft.csdn.com这样的形式,其实csdn@csdn.com这种形式就是从上面那个衍生出来的,当我们用csdn@csdn.com这样的形式访问时,IE会自动解析csdn.com得到IP,并在这个IP下调用默认的文档,假如是default.html,此时如果我们用以下的语句:

<script>

this.location = "gol.aspx?user=" + this.location.href;

</script>

就把csdn@csdn.com作为user的值提交到了gol.aspx

此时我们可以用一下的gol.aspx来实现域名转向

<%@ Page Language="C#" Debug=true%>

<%@ Import NameSpace="System.Data" %>

<%@ Import NameSpace="System.Data.SqlClient" %>

<script language="C#" runat="server">

void Page_Load(Object src,EventArgs e)

{

string url=Request.QueryString["user"].ToString();//获取user的值,即在浏览器中的地址

url=url.ToLower();//将这个地址转成小写形式

url=url.Replace("http://","");//如果地址前带http://,则除掉这个前缀

string[] prefix=url.Split('@'); //以@拆分这个地址,

if(prefix[0]=="")如果没有采用@类型的域名,则转到默认文档.

{

Response.Redirect("ip.aspx?ip="+Request.ServerVariables["REMOTE_ADDR"]);

return;

}

try//连接SQL 数据库,从数据库提取信息,实现域名转向,并增加访问计数。

{

SqlConnection conn=new SqlConnection("server=127.0.0.1;uid=sa;pwd=qi4c;database=qi4c");

conn.Open();

SqlCommand comm=new SqlCommand("select location,click from redr where prefix='"+prefix[0]+"'",conn);

SqlDataReader dr=comm.ExecuteReader();

if(dr.Read())

{

string click=(dr.GetInt32(1)+1).ToString();

string redirecturl=dr.GetString(0).ToString();

dr.Close();

comm.CommandText="Update redr set click="+click+"where prefix='"+prefix[0]+"'";

comm.ExecuteNonQuery();

Response.Redirect(redirecturl);

}

else

{

dr.Close();

Response.Redirect("ip.aspx");

}

conn.Close();

}

catch(Exception exec)

{

Response.Redirect("ip.aspx?ip="+Request.ServerVariables["REMOTE_ADDR"]);

}

}

</script>

<html>

<head>

<title></title>

</head>

<body>

</body>

</html>

数据库的结构

prefix char 10

location char 50

click int 4

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航