分手快乐 发表于 2015-1-16 23:36:33

ASP编程:纯ASP(VBscript)写的环球IP地点搜

问题是他们究竟是喜欢他们是使用软件时,速度快还是速度慢好.(当然在3秒以内).无论是他们输入资料时,查找资料时,分析资料时.ip地点|vbscript<%@LANGUAGE="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支解为四段后个中的一段
endfuncti</p>SQLServer是基于服务器端的中型的数据库,可以适合大容量数据的应用,在功能上管理上也要比Access要强得多。在处理海量数据的效率,后台开发的灵活性,可扩展性等方面强大。

愤怒的大鸟 发表于 2015-1-17 23:56:17

我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。

admin 发表于 2015-1-21 10:33:44

没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。

分手快乐 发表于 2015-1-25 13:29:33

我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。

海妖 发表于 2015-1-27 07:28:45

Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write

兰色精灵 发表于 2015-2-3 12:24:37

另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)

第二个灵魂 发表于 2015-2-8 23:06:49

在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。

金色的骷髅 发表于 2015-2-26 12:34:51

ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。

飘灵儿 发表于 2015-3-8 15:13:29

ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。

透明 发表于 2015-3-16 02:44:16

Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")

因胸联盟 发表于 2015-3-22 19:08:17

如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:
页: [1]
查看完整版本: ASP编程:纯ASP(VBscript)写的环球IP地点搜