一些朋友可能會在做網站時需要考慮浏覽者如果在國內輸入網址則進入中文版網站而國外則進入英文網站,如何區分是國內浏覽者還是國外浏覽者呢,一般是通過浏覽者所在的IP進行判斷(如果來個大概判斷的話可以通過浏覽者所用浏覽器的語言版本或者操作系統的語言版本進行判斷)。
要用IP進行判斷話,首先要有IP的劃分表。下面提供c#判斷國際國內IP的代碼。
注意:為了使得判斷更准確,要及時更新最新的IP劃分表。
附:IP劃分表/Files/efly/WP_IPMAPPING.rar
/// <summary> decimal it = decimal.Parse(strs.ToString());//將IP地址轉換為decimal類型
/// 判斷IP是否為國內IP
/// </summary>
/// <returns>返回true則是國內IP,返回false則是國外IP</returns>
protected bool VerifyIP()
{
string ipaddress = System.Web.HttpContext.Current.Request.UserHostAddress;//獲取浏覽者所在IP
string[] str = ipaddress.Split('.');
//將IP地址轉換為12位的字符串(去掉了“.”符號)
string strs = str[0].PadLeft(3, '0') + str[1].PadLeft(3, '0') + str[2].PadLeft(3, '0') + str[3].PadLeft(3, '0');
ZPY.BLL.WorldIp bll_wp = new ZPY.BLL.WorldIp();
DataSet ds = bll_wp.GetAllList();//將IP劃分表的中國IP所有IP段的內容填充到DataSet對象
DataTable dt = ds.Tables[0];
foreach (DataRow dr in dt.Rows)//遍歷所有的行
{
//獲取每行的“StartIP”字段內容,即某一段國內IP的開始IP
decimal dl1 = decimal.Parse(dr["StartIP"].ToString());
//獲取每行的“EndIP”字段內容,即某一段國內IP的結束IP
decimal dl2 = decimal.Parse(dr["EndIP"].ToString());
//如果浏覽者所在IP所在在這個IP段內,則返回true 同時退出遍歷
if (it >= dl1 && it <= dl2)
{
return true;
}
}
//如果所在IP沒有在表裡面中國IP的任何范圍,則返回false
return false;
}