发现一个ip编码的问题

lamking 2004-08-04 06:22:06
发现很多论坛,文章系统,留言版等都有记录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这种奇怪的地址...
...全文
128 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lly365 2005-06-15
  • 打赏
  • 举报
回复
同上
yangvb 2005-06-15
  • 打赏
  • 举报
回复
ding
yangdengfeng2003 2004-08-04
  • 打赏
  • 举报
回复
ding
xiaobird1 2004-08-04
  • 打赏
  • 举报
回复
呵,没关注过,
关注ing。
laihongbo524 2004-08-04
  • 打赏
  • 举报
回复
准备点的编码格式是,如下:
202.102.179.104

202*256*256*256 + 102*256*256 + 179*256 + 104-1

lamking 2004-08-04
  • 打赏
  • 举报
回复
另外一些数据库存储ip的通常只有文本类型的设置20个宽度(双精度的没问题了)
有可能装不下

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧