发现一个ip编码的问题
发现很多论坛,文章系统,留言版等都有记录ip的功能.
或者把ip以字符串方式存入数据库,或者经过编码后存入数据库,但这里面都忽略了一个问题
Request.ServerVariables("HTTP_X_FORWARDED_FOR")
这个东西返回的值有很多可能
1.空值 这通常是用户没有使用代理.
2.一个合法的ip地址 这表明用户使用了代理
3.多个合法ip构成的字符串比如
202.112.14.151,202.112.14.161
而且不止是两个还有可能更多.这通常发生在使用了多层代理的情况下.
对于1,2 通常程序都能很好的处理,对于第3个,一些编码函数就要出错。
网上很多ip地址编码采用的是类似下面的函数
function IpEncode(byval uip)
if isnull(uip) or uip="" then
IpEncode=0
else
dim ary_ip,n
ary_ip=split(trim(uip),".")
n=ubound(ary_ip)
if n=3 then
IpEncode=ary_ip(0)*256*256*256+ary_ip(1)*65536+ary_ip(2)*256+ary_ip(3)
else
IpEncode=0
end if
end if
end function
这样编码后的数字将是0
解码后ip地址当然0.0.0.0这种奇怪的地址...
问题点数:100、回复次数:6Top
1 楼lamking(卖空间,做网页 QQ:628557)回复于 2004-08-04 18:25:28 得分 0
另外一些数据库存储ip的通常只有文本类型的设置20个宽度(双精度的没问题了)
有可能装不下Top
2 楼laihongbo524(风铃夜思雨)回复于 2004-08-04 18:45:41 得分 0
准备点的编码格式是,如下:
202.102.179.104
202*256*256*256 + 102*256*256 + 179*256 + 104-1
Top
3 楼xiaobird1(Vincent)回复于 2004-08-04 18:47:34 得分 0
呵,没关注过,
关注ing。
Top
4 楼yangdengfeng2003(紫电清霜)回复于 2004-08-04 18:54:17 得分 0
dingTop
5 楼yangvb(虚拟)回复于 2005-06-15 13:38:00 得分 50
dingTop
6 楼lly365(lly365)回复于 2005-06-15 13:39:37 得分 50
同上Top




