仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 822|回复: 7
打印 上一主题 下一主题

[学习教程] ASP教程之ASP读取单纯IP库代码

[复制链接]
小女巫 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:44:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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服务器,所以性能稳定性也一般
冷月葬花魂 该用户已被删除
沙发
发表于 2015-1-19 05:20:47 | 只看该作者
他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。
莫相离 该用户已被删除
板凳
发表于 2015-1-24 06:25:50 来自手机 | 只看该作者
Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")
因胸联盟 该用户已被删除
地板
发表于 2015-1-31 21:30:45 | 只看该作者
以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。
金色的骷髅 该用户已被删除
5#
发表于 2015-2-6 23:34:26 | 只看该作者
最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。
只想知道 该用户已被删除
6#
发表于 2015-2-19 02:23:18 | 只看该作者
在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。
飘灵儿 该用户已被删除
7#
发表于 2015-3-6 12:14:58 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
小妖女 该用户已被删除
8#
发表于 2015-3-13 00:56:56 | 只看该作者
用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-6 06:55

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表