学习ASP技术编写完整的一个IP所在地搜索类(2)
来源:网络整理 责任编辑:栏目编辑 发表时间:2013-07-01 10:29 点击:次
'────────────────────────────────
' 执行一个SQL命令,并返回一个数据集对象
Private Function SQLExeCute(strSql)
Dim Rs
Set Rs=DBConn.ExeCute(strSQL)
Set SQLExeCute = Rs
Set Rs=nothing
End Function
'────────────────────────────────
'IP 效验
Public Function Valid_IP(ByVal IP)
Dim i
Dim dot_count
Dim test_octet
Dim byte_check
IP = Trim(IP)
' 确认IP长度
If Len(IP) < &H08 Then
Valid_IP = False
'显示错误提示
Exit Function
End If
i = &H01
dot_count = &H00
For i = 1 To Len(IP)
If Mid(IP, i, &H01) = "." Then
' 增加点的记数值
' 并且设置text_octet 值为空
dot_count = dot_count + &H01
test_octet = ""
If i = Len(IP) Then
' 如果点在结尾则IP效验失败
Valid_IP = False
' 显示错误提示
Exit Function
End If
Else
test_octet = test_octet & Mid(IP, i, &H01)
' 使用错误屏蔽来检查数据段值的正确性
On Error Resume Next
' 进行强制类型转换
' 如果转换失败就可通过检查Err是否为真来确认
byte_check = CByte(test_octet)
If (Err) Then
' 强制类型转换产生错误
' 所取段值的数据不为数值
' 或所取段值的数据长度大于&HFF
' 则类型不为byte类型
' IP 地址的正确性为假
Valid_IP = False
Exit Function
End If
End If
Next
' 通过上一步的验证,现在应该要检查小点是否有3个
If dot_count <> &H03 Then
Valid_IP = False
Exit Function
End If
' 一切正常,那么该IP为正确的IP地址
Valid_IP = True
End Function
'────────────────────────────────
' 转换一个数值为IP
Public Function CStringIP(ByVal anNewIP)
Dim lsResults
Dim lnTemp
Dim lnIndex
For lnIndex = &H03 To &H00 Step -&H01
lnTemp = Int(anNewIP / (&H100 ^ lnIndex))
lsResults = lsResults & lnTemp & "."
anNewIP = anNewIP - (lnTemp * (&H100 ^ lnIndex))
Next
lsResults = Left(lsResults, Len(lsResults) - &H01)
CStringIP = lsResults
End function
'────────────────────────────────
' 转换一个IP到数值
Public Function CLongIP(ByVal asNewIP)
Dim lnResults
Dim lnIndex
Dim lnIpAry
lnIpAry = Split(asNewIP, ".", &H04)
For lnIndex = &H00 To &H03
if Not lnIndex = &H03 Then
lnIpAry(lnIndex) = lnIpAry(lnIndex) * (&H100 ^ (&H03 - lnIndex))
End if
lnResults = lnResults + lnIpAry(lnIndex)
Next
CLongIP = lnResults
End function
'────────────────────────────────
' 取Client IP
Public Function GetClientIP()
dim uIpAddr
' 本函数参考webcn.Net/AspHouse 文献<取真实的客户IP>
uIpAddr = Request.Serve
' 执行一个SQL命令,并返回一个数据集对象
Private Function SQLExeCute(strSql)
Dim Rs
Set Rs=DBConn.ExeCute(strSQL)
Set SQLExeCute = Rs
Set Rs=nothing
End Function
'────────────────────────────────
'IP 效验
Public Function Valid_IP(ByVal IP)
Dim i
Dim dot_count
Dim test_octet
Dim byte_check
IP = Trim(IP)
' 确认IP长度
If Len(IP) < &H08 Then
Valid_IP = False
'显示错误提示
Exit Function
End If
i = &H01
dot_count = &H00
For i = 1 To Len(IP)
If Mid(IP, i, &H01) = "." Then
' 增加点的记数值
' 并且设置text_octet 值为空
dot_count = dot_count + &H01
test_octet = ""
If i = Len(IP) Then
' 如果点在结尾则IP效验失败
Valid_IP = False
' 显示错误提示
Exit Function
End If
Else
test_octet = test_octet & Mid(IP, i, &H01)
' 使用错误屏蔽来检查数据段值的正确性
On Error Resume Next
' 进行强制类型转换
' 如果转换失败就可通过检查Err是否为真来确认
byte_check = CByte(test_octet)
If (Err) Then
' 强制类型转换产生错误
' 所取段值的数据不为数值
' 或所取段值的数据长度大于&HFF
' 则类型不为byte类型
' IP 地址的正确性为假
Valid_IP = False
Exit Function
End If
End If
Next
' 通过上一步的验证,现在应该要检查小点是否有3个
If dot_count <> &H03 Then
Valid_IP = False
Exit Function
End If
' 一切正常,那么该IP为正确的IP地址
Valid_IP = True
End Function
'────────────────────────────────
' 转换一个数值为IP
Public Function CStringIP(ByVal anNewIP)
Dim lsResults
Dim lnTemp
Dim lnIndex
For lnIndex = &H03 To &H00 Step -&H01
lnTemp = Int(anNewIP / (&H100 ^ lnIndex))
lsResults = lsResults & lnTemp & "."
anNewIP = anNewIP - (lnTemp * (&H100 ^ lnIndex))
Next
lsResults = Left(lsResults, Len(lsResults) - &H01)
CStringIP = lsResults
End function
'────────────────────────────────
' 转换一个IP到数值
Public Function CLongIP(ByVal asNewIP)
Dim lnResults
Dim lnIndex
Dim lnIpAry
lnIpAry = Split(asNewIP, ".", &H04)
For lnIndex = &H00 To &H03
if Not lnIndex = &H03 Then
lnIpAry(lnIndex) = lnIpAry(lnIndex) * (&H100 ^ (&H03 - lnIndex))
End if
lnResults = lnResults + lnIpAry(lnIndex)
Next
CLongIP = lnResults
End function
'────────────────────────────────
' 取Client IP
Public Function GetClientIP()
dim uIpAddr
' 本函数参考webcn.Net/AspHouse 文献<取真实的客户IP>
uIpAddr = Request.Serve
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>