[原创]屏蔽某IP段访问网页(完美无错版)

很多网上贴的都有点问题,数据转换成十六进制数时没做判断.

public partial class index : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{

//读取客户端IP地址
string Ip = Page.Request.UserHostAddress.ToString();
//LabelViewIp.Text = Ip;
//去掉IP地址中带‘.’
string[] Ip_List = Ip.Split(".".ToCharArray());
string X_Ip = "";
//循环string数组,把数据转换成十六进制数,并合并数组
foreach (string ip in Ip_List)
{
if (Convert.ToInt16(ip) < 16)
                    X_Ip 
+= "0" + Convert.ToInt16(ip).ToString("x");
                
else
                    X_Ip 
+= Convert.ToInt16(ip).ToString("x");
}

//将十六进制数转换成十进制数
long N_Ip = long.Parse(X_Ip, System.Globalization.NumberStyles.HexNumber);
IpDataIf ipdataIf 
= new IpDataIf();
ipdataIf.Iplong 
= N_Ip;
if (ipdataIf.Ifxm == 1)  //string.IndexOf()
{
//Response.Write("<script language='javascript'>alert('YO YO!')</script>");
//跳转URL,终止当前页
Response.Redirect("http://www.google.com/",true); 
}

else
{
//Response.Write("<script language='javascript'>alert('YO YO!')</script>");
Response.Redirect("Default.aspx"); 


}

}


}

}

public class IpDataIf
{
//数据库连接串
public static string constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=IP.mdb;Jet OLEDB:Database Password=admin";
private static long iplong;
public long Iplong
{
get return iplong; }
set { iplong = value; }
}

public int ifxm;
public int Ifxm
{
get
{
string sql = "select ifxm from address where '" + this.Iplong + "'>=ip1 and '" + this.Iplong + "'<= ip2";
ifxm 
= this.getcount(sql);
return ifxm;
}

}

返回受影响的行数/第一行第一列结果
}
 
posted @ 2008-01-18 01:44  E.L.---黑者如斯夫,不舍昼夜......  阅读(4384)  评论(1编辑  收藏  举报