仓酷云

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

[学习教程] ASP网页编程之纯ASP(VBscript)写的环球IP地点搜刮程序...

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

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

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

x
只要你想学,就没什么优缺点,上面那位大哥已经把网上的评论说了,但我认为想学哪个都一样,不然它就不可能在当今时代数字艺术方面存活到今天ip地点|vbscript|程序<"CODEPAGE="936"%>
<html>
<head>
<title>UntitledDocument</title>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
</head>
<body>
<%
dimfinishgetip,showip,allip
////////////////////////////////////////////////////////////////////////////////////////
程序还不是很精简,今后再修正
本程序所用的数据库为--“冯志宏”--所写的--“追捕”--软件中所带IP数据库和
“国华软件GuohuaSoft”的作者--“冯国华”―所写的“环球IP地点分派表.chm”合二为一失掉的
感激“冯志宏”和“冯国华”供应的数据
数据库中另有很多的反复IP地点,但愿故意人能将其删除,减小数据库
我的程序写的还很愚笨,但愿人人能多提定见,多多交换,感谢!
////////////////////////////////////////////////////////////////////////////////////////
办理思绪:
获得的客户端IP通常为202.11.25.1这类,而数据库中的IP格局为202.011.025.001,这就必要将获得的
客户端IP转换为与数据库中IP一样的格局
由于今朝我们所用的IP是分为4段,每段3位,两头以“.”分开
以是我的思绪是将客户端IP以“.”标记支解为4段,即202/11/25/1
然后再分离查对每段,假如是3位,则稳定;如不敷3位,为2位,该段前补1个0,为1,同理,则补2个0
失掉格局化后的IP后,往失落IP的最初一段,即取包含“.”的前11位,与数据库中的startip字段的前11位比拟较,查找不异的值
由于从数据库中能够看到,startip和endip的前三段都是一样的,而最初一段不外是外部子网地点,能够往失落
以是只需取startip或endip的恣意一个字段的前11位与客户端IP的前11位比拟较就能够查到准确的地点地
/////////////////////////////////////////////////////////////////////////////////////////
functioncheckip_trueip()
取客户端实在IP
getclientip=Request.ServerVariables("HTTP_X_FORWARDED_FOR")假如客户端用了代办署理服务器,则用Request.ServerVariables("REMOTE_ADDR")办法只能失掉空值,则应当用ServerVariables("HTTP_X_FORWARDED_FOR")办法
Ifgetclientip=""Then
getclientip=Request.ServerVariables("REMOTE_ADDR")假如客户端没用代办署理,则Request.ServerVariables("HTTP_X_FORWARDED_FOR")失掉是空值,应当用Request.ServerVariables("REMOTE_ADDR")办法
endif
checkip_trueip=getclientip
endfunction
/////////////////////////////////////////////////////////////////////////////
functiongetaccessrecordset(db,sql,mark,read)获得Recordset工具
setconn=getaccessconn(db)输出参数为db-数据库的绝对路径,sql-SQL语句,mark,read为数据库读取体例,1,1为只读,1,3为读写
constr="Provider=microsoft.jet.oledb.4.0;"&"dataSource="&Server.MapPath(db)
conn.openconstr
setgetaccessrecordset=server.CreateObject("ADODB.Recordset")
getaccessrecordset.opensql,conn,mark,read
Endfunction
//////////////////////////////////////////////////////////////////////////
functiongetaccessconn(db)获得connection工具
setgetaccessconn=server.CreateObject("ADODB.Connection")
constr="DRIVER={MICROSOFTACCESSDRIVER(*.MDB)};DBQ="&SERVER.MAPPATH("allcon/#bbsall.mdb")
constr="Provider=microsoft.jet.oledb.4.0;"&"dataSource="&Server.MapPath(db)
getaccessconn.openconstr
endfunction
/////////////////////////////////////////////////////////////////////////
dimgetip
getip=(trim(request.ServerVariables("REMOTE_ADDR")))从客户端猎取IP
getip=(trim(request.QueryString("comes")))本人输出IP测试
response.Write(getip&"<br>")
////////////////////////////////////////////////////////////////////////
functioncheckip_locations(checkstring)前往IP平分隔字符的地位函数
checkip_locations=Instr(checkstring,".")将地位的值付与给函数
endfunction
///////////////////////////////////////////////////////////////////////
以下函数为支解IP,获得每次支解后“.”标记右侧的IP残剩的字符串
functioncheckip_left(checkstring)
locations_left=checkip_locations(checkstring)失掉在IP残剩的字符串中“.”第一次呈现的地位
iplength_left=Len(checkstring)获得IP残剩的字符串的长度
divide_locations_left=iplength_left-locations_left获得在IP残剩的字符串中“.”第一次呈现的地位,从右往左数是几位
ipstr_left=Right(checkstring,divide_locations_left)获得本次支解后,“.”标记右侧的IP残剩的字符串
checkip_left=ipstr_left将下面失掉的字符串赋给函数
endfunction
///////////////////////////////////////////////////////////////////////
以下函数为支解IP,获得每次支解后“.”标记右边的IP字符串,行将IP分为四段,每段的字符串

functioncheckip_right(checkstring)
locations_right=checkip_locations(checkstring)获得在IP中“.”第一次呈现的地位
iplength_right=Len(checkstring)获得IP字符串长度
divide_locations_right=iplength_right-locations_right获得在IP残剩的字符串中“.”第一次呈现的地位,从右往左数是几位
ipstr11=Trim(Replace(Left(checkstring,locations_right),".",""))将失掉的“.”右边的字符串往失落"."标记
假如IP分为4段后每段不敷3位则补0
ifLen(ipstr11)="2"thenipstr11="0"&ipstr11
ifLen(ipstr11)="3"thenipstr11=ipstr11
ifLen(ipstr11)="1"thenipstr11="00"&ipstr11
checkip_right=ipstr11失掉“.”标记之前的字符串,即本次支解后失掉的IP分</p>因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。SQLServer还有更多的扩展,可以用存储过程,数据库大小无极限限制。
乐观 该用户已被删除
沙发
发表于 2015-1-20 09:57:16 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
小魔女 该用户已被删除
板凳
发表于 2015-1-24 14:23:23 | 只看该作者
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
再现理想 该用户已被删除
地板
发表于 2015-2-1 16:44:37 | 只看该作者
以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。
小女巫 该用户已被删除
5#
 楼主| 发表于 2015-2-2 22:30:37 | 只看该作者
学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。
不帅 该用户已被删除
6#
发表于 2015-2-8 15:26:08 | 只看该作者
不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍
谁可相欹 该用户已被删除
7#
发表于 2015-2-25 19:26:23 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。
冷月葬花魂 该用户已被删除
8#
发表于 2015-3-8 01:33:40 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:
愤怒的大鸟 该用户已被删除
9#
发表于 2015-3-15 19:17:32 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
admin 该用户已被删除
10#
发表于 2015-3-22 03:07:55 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-9-21 01:52

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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