服务器之家

服务器之家 > 正文

ASP中实现限制IP的函数详解

时间:2019-10-16 09:53     来源/作者:asp代码网
  1. '******************************  
  2. 'Function CheckIp(cInput_Ip,cBound_Ip)  
  3. 'Created by qqdao, qqdao@263.net 2001/11/28  
  4. '说明:首先需要根据;号循环,然后判断是否含有"-",如果有则进行拆分处理,最后判断是否在范围内  
  5. '参数: cInput_Ip,代检查的ip  
  6. 'cBound_Ip,给定的范围格式为,单个ip,和范围ip,范围ip最后使用”-“分割,如果是“*”则必须放到最后一位  
  7. '每个范围后添加":ALLOW"表示允许登陆,添加":REFUSE"表示拒绝登陆。多个范围用”;“隔开  
  8. '例如192.168.1*.*:ALLOW;192.168.1.1:ALLOW;192.168.1.1-10:REFUSE"  
  9. '返回值: true/false  
  10. '更新:2001/12/05 支持ALLOW,REFUSE支持'*‘,不想对?支持,因为和*差不多  
  11. '******************************  
  12. function CheckIp(cInput_Ip,cBound_Ip)  
  13. dim cSingle_Ip,cTemp_IP,cStart_IP,cEnd_Ip  
  14. CheckIp = false  
  15. cSingle_Ip=split(cBound_Ip,";")  
  16.  
  17. for i=0 to ubound(cSingle_Ip)  
  18. if Instr(cSingle_Ip(i),"REFUSE") <> 0 then “就是拒绝了  
  19. cTemp_IP = left(cSingle_Ip(i),instr(cSingle_Ip(i),":")-1)  
  20.  
  21. if Instr(cTemp_IP,"*") <> 0 then “是宽范围  
  22. cStart_IP = left(cTemp_IP,instr(cTemp_IP,"*")-1)  
  23. if left(cInput_Ip,len(cStart_IP))=cStart_IP then  
  24. CheckIp = false  
  25. exit function  
  26. end if  
  27. end if  
  28.  
  29. if Instr(cTemp_IP,"-") = 0 then  
  30. cStart_IP = cTemp_IP  
  31. cEnd_Ip = cTemp_IP  
  32. else  
  33. cStart_IP = left(cTemp_IP,instr(cTemp_IP,"-")-1)  
  34. cEnd_Ip = left(cStart_IP,InStrRev(cStart_IP,".")-1)+"."+mid(cTemp_IP,instr(cTemp_IP,"-")+1)  
  35. end if  
  36.  
  37. if Ip2Str(cInput_Ip)>=Ip2Str(cStart_IP) and Ip2Str(cInput_Ip)<=Ip2Str(cEnd_Ip) then  
  38. CheckIp = false  
  39. exit function  
  40. end if  
  41.  
  42. elseif Instr(cSingle_Ip(i),"ALLOW") <> 0 then “允许  
  43.  
  44. cTemp_IP = left(cSingle_Ip(i),instr(cSingle_Ip(i),":")-1)  
  45.  
  46. if Instr(cTemp_IP,"*") <> 0 then “是宽范围  
  47. cStart_IP = left(cTemp_IP,instr(cTemp_IP,"*")-1)  
  48. if left(cInput_Ip,len(cStart_IP))=cStart_IP then  
  49. CheckIp = true  
  50. end if  
  51. end if  
  52.  
  53. if Instr(cTemp_IP,"-") = 0 then  
  54. cStart_IP = cTemp_IP  
  55. cEnd_Ip = cTemp_IP  
  56. else  
  57. cStart_IP = left(cTemp_IP,instr(cTemp_IP,"-")-1)  
  58. cEnd_Ip = left(cStart_IP,InStrRev(cStart_IP,".")-1)+"."+mid(cTemp_IP,instr(cTemp_IP,"-")+1)  
  59. end if  
  60.  
  61. if Ip2Str(cInput_Ip)>=Ip2Str(cStart_IP) and Ip2Str(cInput_Ip)<=Ip2Str(cEnd_Ip) then  
  62. CheckIp =true  
  63. else  
  64. CheckIp =false  
  65. end if  
  66. end if  
  67. next  
  68.  
  69. end function  
  70. '******************************  
  71. 'Function Ip2Str(cIp)  
  72. 'Created by qqdao, qqdao@263.net 2001/11/28  
  73. '参考动网ip算法  
  74. '参数:cIp ip地址  
  75. '返回值: 转换后数值  
  76. '******************************  
  77. function Ip2Str(cIp)  
  78. Dim str1,str2,str3,str4  
  79. Dim cIp_Temp  
  80. if cIp="127.0.0.1" then cIp="192.168.0.1"  
  81. str1=left(cIp,instr(cIp,".")-1)  
  82. cIp_Temp=mid(cIp,instr(cIp,".")+1)  
  83. str2=left(cIp_Temp,instr(cIp_Temp,".")-1)  
  84. cIp_Temp=mid(cIp_Temp,instr(cIp_Temp,".")+1)  
  85. str3=left(cIp_Temp,instr(cIp_Temp,".")-1)  
  86. str4=mid(cIp_Temp,instr(cIp_Temp,".")+1)  
  87.  
  88. if isNumeric(str1)=0 or isNumeric(str2)=0 or isNumeric(str3)=0 or isNumeric(str4)=0 then  
  89.  
  90. else  
  91. Ip2Str=cint(str1)*256*256*256+cint(str2)*256*256+cint(str3)*256+cint(str4)-1  
  92. end if  
  93.  
  94. end function  
标签:

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字 2019-06-05
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
返回顶部