虚位以待(AD)
虚位以待(AD)
首页 > 网络编程 > ASP编程 > 用ASP隐藏IP末位完整版

用ASP隐藏IP末位完整版
类别:ASP编程   作者:码皇   来源:互联网   点击:

有时候我们需要显示来访客户的IP,但是又不能泄露客户的隐私,就需要隐藏IP的后几位,显示类似于:222 222 222 * 。我们可以用ASP来实现隐藏IP末位的功能

有时候我们需要显示来访客户的IP,但是又不能泄露客户的隐私,就需要隐藏IP的后几位,显示类似于:222.222.222.* 

简单的说可以用left来实现:

<%=left(rs("IP"),12)%>*

但是它有局限性就是只能隐藏前三段都是三位的IP,非常不方便。那么我们可以用Len取总位数减去想隐藏的位数。

即:

<%=left(rs("IP"),(len(rs(IP))-3))%>

这样就可以隐藏任何IP的后三位。不过这个仍然有缺陷,对于类似于127.0.0.1/8.8.8.8之类的IP显示出来分别是127.0.* 和 8.8.*,而不是127.0.0.* 和 8.8.8.* 这个就需要拓展思路了。

那么我们看看不同的IP用上面方法隐藏的效果吧:

222.222.222.222  隐藏后 222.222.222.*
192.168.1.19  隐藏后 192.168.1*
8.8.8.8  隐藏后 8.8.*

而我们要求的效果是:222.222.222.*/192.168.1.*/8.8.8.*

也就说如果隐藏末位的话需要做一个判断,判断末位也就是最后一个“.”之后有几位,想起前段时间学习的intStr函数,于是写代码如下:

<%
dim ip,ipV3,ipV2   ' 首先定义几个变量,这是我的个人习惯,其实不用定义也可以使用的,以免下面变量重复
ip=Request.ServerVariables("REMOTE_ADDR")  ' 读取客户IP
ipV3=right(ip,3)  ' 右取整个IP的三位数
ipV2=right(ip,2)  ' 右取整个IP的两位数

if instr(ipV3,".")=0 then   ' 判断右边三位数里面是否含有“.”,如果没有,那么代表末位是三位数
response.Write(left(ip,len(ip)-3)&"*")   ' 隐藏右边三位数
elseif instr(ipV2,".")=0 then   ' 判断右边两位数如果没有含有“.”,那么代表末位是两位数
response.Write(left(ip,len(ip)-2)&"*")   ' 隐藏右边两位数
else   ' 如果上述条件都不满足那么代表末位是一个数字
response.Write(left(ip,len(ip)-1)&"*")   ' 隐藏右边一位数
end if
%>

这样就可以完美实现不同IP都可以准确隐藏末位,显示类似于192.168.1.* 和 222.222.222.*

我将上面这段程序上传到了空间,大家可以测试一下。

http://www.icoa.cn/demo/ip.asp

参考资料:
1.ASP字符串InStr函数用来判断是否含有某些字符串
http://www.icoa.cn/a/317.html
2.ASP隐藏IP后末位和手机中间四位数
http://liboseo.com/4.html

相关热词搜索: IP 隐藏 末位 星号 ASP