|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
缺点:正版成本价格贵(盗版就不说了)、不够安全,大多数服务器用windows系统,没有linux安全数据库利用的单纯数据库QQwry.Dat,6兆摆布。
数据库下载地点:南方网通|华东电信|主动选择线路
一向想做带水印的IP署名图来着。周末闲着就下手了。ASP这方面的材料良多,就未几说了。只把算法贴上。.NET关于这方面的文章很少,我归正搜到。.Net的如今先说说算法,过几天把做成水印图的教程发一下。
ASP版的,找到两种算法,一种是搜到的,另外一种是数据库附带的一份申明(作者很刻薄)。
两种算法都贴上:
第一种算法:
援用:
functioncip(sip)
tip=cstr(sip)
sip1=left(tip,cint(instr(tip,".")-1))
tip=mid(tip,cint(instr(tip,".")+1))
sip2=left(tip,cint(instr(tip,".")-1))
tip=mid(tip,cint(instr(tip,".")+1))
sip3=left(tip,cint(instr(tip,".")-1))
sip4=mid(tip,cint(instr(tip,".")+1))
ifcint(sip1)<128then
cip=cint(sip1)*256*256*256+cint(sip2)*256*256+cint(sip3)*256+cint(sip4)
else
cip=cint(sip1)*256*256*256+cint(sip2)*256*256+cint(sip3)*256+cint(sip4)-4294967296
endif
endfunction 这个算法,有点乱。没看懂甚么意义。出格是,
援用:
ifcint(sip1)<128then
cip=cint(sip1)*256*256*256+cint(sip2)*256*256+cint(sip3)*256+cint(sip4)
else
cip=cint(sip1)*256*256*256+cint(sip2)*256*256+cint(sip3)*256+cint(sip4)-4294967296
endif 经测试,无需判别。即
cip=cint(sip1)*256*256*256+cint(sip2)*256*256+cint(sip3)*256+cint(sip4)
就能够得出准确的值。
第二种算法,这个对照复杂和简便,算法一览无余,傻子城市选这个,给正文了一下:
援用:
FunctioncacuIp(sIP)
OnErrorResumeNext
DimsrIp,aIp
srIp=0
aIp=Split(sIP,".")截取字符串,失掉数组aIp[0]到aIp[3]
IfUBound(aIP)3Then假如不是准确的IP
cacuIP=0前往0
ExitFunction加入函数
EndIf
Fori=0To3
srIp=srIp+(CInt(aIP(i))*(256^(3-i)))每一个数乘上256的3-i次幂,再把值相加
Next
cacuIp=srIp-1最初再减往1,就失掉单纯数据库里那看不懂的一堆数了
IfErrThencacuIp=0
EndFunction 复杂了然,偶喜好~
OK,上面换成.NET的算法.
援用:
voidciker_ip(stringIP)
{
System.Int64ip0=0;//64位
string[]ip_array=IP.Split(newchar[]{.},StringSplitOptions.RemoveEmptyEntries);//同ASP
for(inti=0;i<=3;i++)
{
ip0=ip0+Convert.ToInt64(ip_array)*Convert.ToInt64(Math.Pow(256,3-i));//64位
}
ip0=ip0-1;
} OK,到此,.NET算法停止了.把.NET全体代码送上.
Web.config:
援用:
<appSettings>
<addkey="access"value="Ciker_IP.mdb"/>
<connectionStrings/> IP.ASPX.CS:
增加上面的定名空间:
援用:
usingSystem.Data.OleDb;
usingSystem.Text;
protectedvoidPage_Load(objectsender,EventArgse)
{
ciker_ip(Request.ServerVariables["Remote_Addr"].ToString());
}
voidciker_ip(stringIP)
{
System.Int64ip0=0;
string[]ip_array=IP.Split(newchar[]{.},StringSplitOptions.RemoveEmptyEntries);
for(inti=0;i<=3;i++)
{
ip0=ip0+Convert.ToInt64(ip_array)*Convert.ToInt64(Math.Pow(256,3-i));
}
ip0=ip0-1;
stringstrConnection="Provider=Microsoft.Jet.Oledb.4.0;DataSource="+Server.MapPath(ConfigurationSettings.AppSettings["access"]);
OleDbConnectionconn=newOleDbConnection(strConnection);
OleDbCommandcmd=conn.CreateCommand();
cmd.CommandText="SELECTpos,DetailFROMipwhereStartIP<="+ip0+"andEndIP>="+ip0;
conn.Open();
OleDbDataReaderdr=cmd.ExecuteReader();
while(dr.Read())
{
Response.Write("你丫的IP:"+IP+"<br/>");
Response.Write("IP编码:"+ip0+"<br/>");
Response.Write("区域:"+dr[0].ToString()+""+dr[1].ToString());
}
dr.Close();
conn.Close();
} asp可以使用微软的activeX使得网页功能无比强大,不过安全性也较差,而且是基于的windows服务器,所以性能稳定性也一般 |
|