请问下这段代码怎么用.放哪用.请具体讲下.谢谢

RT.
function LockIP(sip)
dim str1,str2,str3,str4
dim num
LockIP=false
if isnumeric(left(sip,2)) then
str1=left(sip,instr(sip,".")-1)
sip=mid(sip,instr(sip,".")+1)
str2=left(sip,instr(sip,".")-1)
sip=mid(sip,instr(sip,".")+1)
str3=left(sip,instr(sip,".")-1)
str4=mid(sip,instr(sip,".")+1)
if isNumeric(str1)=0 or isNumeric(str2)=0 or isNumeric(str3)=0 or isNumeric(str4)=0 then

else
num=cint(str1)*256*256*256+cint(str2)*256*256+cint(str3)*256+cint(str4)-1
sql="select count(*) from LockIP where ip1 <="&num&" and ip2 >="&num&""
set rs=conn.execute(sql)
if rs(0)>0 then
LockIP=true
end if
set rs=nothing
end if
end if
end function
还有就是,我现在已经有一张全国的IP对应的地址这样的表.字段为开始IP.结束IP.对应城市名.那里IP全是十进制的像798588928这样的数字,
有人说用cint(str1)*256*256*256+cint(str2)*256*256+cint(str3)*256+cint(str4)-1这个表达式可以把IP转化为十进制吗?
请明白的讲下.谢谢!
问题补充:这个function代码是放在前台页面吗?,还是放在哪?如果放在前台页台,我后台怎么调用呢?它的返回值应该是个长整型吧,还是什么?这段代码放哪里.怎么调用.谢谢.!!

www说
浏览 66回答 3
3回答

长风秋雁

你这个是ASP中的vbscript脚本吧,这个function是放在服务器上执行的,在某个.asp页面中。这个IP转换的函数用的很多,他的功能就是把IP地址转换成十进制的数值,用来方便数据库查询的。因为如果IP是字符型,那是不好查询的,所以就做了个转换,这样你就可以用这种方式查询了:select count(*) from LockIP where ip1 <="&num&" and ip2 >="&num&"但这个函数并不是直接用来查询IP对应城市的,它应该是用来查找某个IP是否在被锁定的IP段范围内的,不过你可以稍加修改,它就可以用来查找城市了,因为这个IP表里应该有城市字段的,这样改:sql = "select city from [你的IP表] where ip1 <=" & num & " and ip2 >=" & numdim city=""set rs=conn.execute(sql)if rs <> null and rs.count > 0 thencity = rs(0)end if其中的city对应你表中的城市字段

慕虎7371278

System.Net.IPAddress.Parse(context.Request.UserHostAddress)可以把IP转换成数字形式===================================网上存在的IP数据库,如QQ纯真数据库的格式大致如下ip1,ip2,地址ip11,ip22,地址ip111,ip222,地址ip1111,ip222,地址……=====================你把ip1转换为数字存入数据库字段1,把IP2转换为数字存入IP2,把地址存入字段3======================查询的时候,你把IP转换为数字ipnum。select 地址 from 表 where ipnum>=字段1 and ipnum<=字段2=======================也可以把ip当字符串,不足三位的补0,查询的时候类似,不过应该速度没上面那个

猛跑小猪

加个:using System.Text.RegularExpressions;public partial class _Default : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){Response.Write(IPAddress);}#region 取得客户端真实IP。如果有代理则取第一个非内网地址/// <summary>/// 取得客户端真实IP。如果有代理则取第一个非内网地址/// </summary>public static string IPAddress{get{string result = string.Empty;result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];if (!string.IsNullOrEmpty(result)){//可能有代理if (result.IndexOf(".") == -1) //没有“.”肯定是非IPv4格式result = null;else{if (result.IndexOf(",") != -1){//有“,”,估计多个代理。取第一个不是内网的IP。result = result.Replace(" ", "").Replace("'", "");string[] temparyip = result.Split(",;".ToCharArray());for (int i = 0; i < temparyip.Length; i++){if (IsIPAddress(temparyip[i])&& temparyip[i].Substring(0, 3) != "10."&& temparyip[i].Substring(0, 7) != "192.168"&& temparyip[i].Substring(0, 7) != "172.16."){return temparyip[i]; //找到不是内网的地址}}}else if (IsIPAddress(result)) //代理即是IP格式return result;elseresult = null; //代理中的内容 非IP,取IP}}string IpAddress = (!string.IsNullOrEmpty(HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"])) ? HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] : HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];if (null == result || result == String.Empty)result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];if (result == null || result == String.Empty)result = HttpContext.Current.Request.UserHostAddress;return result;}}#endregion#region 判断是否是IP格式/// <summary>/// 判断是否是IP地址格式 0.0.0.0/// </summary>/// <param name="str">待判断的IP地址</param>/// <returns>true or false</returns>public static bool IsIPAddress(string str){if (str == null || str == string.Empty || str.Length < 7 || str.Length > 15) return false;string regformat = @"^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$";Regex regex = new Regex(regformat, RegexOptions.IgnoreCase);return regex.IsMatch(str);}#endregion}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript