注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

水滴石穿

破浪是阵风!

 
 
 

日志

 
 

c# ip地址限制(类)篇  

2011-10-25 10:41:09|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

public class CheckIP
{
    public CheckIP()
    {
        //
        //TODO: 在此处添加构造函数逻辑
        //
    }

    #region 获取真实IP

    /// <summary>
    /// 获取真实IP
    /// </summary>
    /// <returns>返回IP字符串</returns>
    public string GetRealIP()
    {
        string ip;
        try
        {
            HttpRequest request = HttpContext.Current.Request;

            if (request.ServerVariables["HTTP_VIA"] != null)
            {
                ip = request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString().Split(',')[0].Trim();
            }
            else
            {
                ip = request.UserHostAddress;
            }
        }
        catch (Exception e)
        {
            throw e;
        }

        return ip;
    }
    #endregion

    #region 将IP地址格式化为整数型 IpToInt(string ip)
    /// <summary>
    /// 将IP地址格式化为整数型
    /// </summary>
    /// <param name="ip"></param>
    /// <returns></returns>
    public long IpToInt(string ip)
    {
        char[] dot = new char[] { '.' };
        string[] ipArr = ip.Split(dot);
        if (ipArr.Length == 3)
            ip = ip + ".0";
        ipArr = ip.Split(dot);

        long ip_Int = 0;
        long p1 = long.Parse(ipArr[0]) * 256 * 256 * 256;
        long p2 = long.Parse(ipArr[1]) * 256 * 256;
        long p3 = long.Parse(ipArr[2]) * 256;
        long p4 = long.Parse(ipArr[3]);
        ip_Int = p1 + p2 + p3 + p4;
        return ip_Int;
    }
    #endregion


    #region 判断IP是否为内网IP

    /// <summary>
    /// 获取真实IP
    /// </summary>
    /// <returns>返回IP字符串</returns>
    public bool DoCheckIP(string GetIP)
    {
        bool ok = false;

        //允许的IP地址范围:ipcheck
        string[,] ipcheck = new string[,] {  { "172.0.0.0", "172.255.255.255" }, { "10.0.0.1", "10.255.255.255" }, { "210.41.0.0", "210.41.255.255" }, { "125.71.1.1", "125.71.255.255" } };

        long intIP = this.IpToInt(GetIP);
        for (int i = 0; i < ipcheck.GetLength(0); i++)
        {
            if (intIP < this.IpToInt(ipcheck[i, 0]) || intIP > this.IpToInt(ipcheck[i, 1]))
            {
                ok= false;
            }
            else
            {
                ok = true;
                break;
            }
           
        }
        return ok;
    }
    #endregion

}

 

 

使用方法:

 CheckIP checkip = new CheckIP();
        //判断用户IP是否为内网IP
        if (!checkip.DoCheckIP(checkip.GetRealIP()))
            Response.Write("对不起,您所在的IP为外网IP,不能登入本站。");

  评论这张
 
阅读(545)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018