From 3b18a48485f7207438d9d0eb3038d979e069431d Mon Sep 17 00:00:00 2001 From: yzh <snbbt@21cn.com> Date: 星期四, 26 五月 2022 17:58:18 +0800 Subject: [PATCH] 优化产品及产品分类,订单,对称加密,IP转地区名称 --- web/Common/Utils.cs | 127 +++++++++++++++++++++++++++++++++++++++++ 1 files changed, 125 insertions(+), 2 deletions(-) diff --git a/web/Common/Utils.cs b/web/Common/Utils.cs index 5aff652..db8f640 100644 --- a/web/Common/Utils.cs +++ b/web/Common/Utils.cs @@ -1,4 +1,5 @@ -锘縰sing System; +锘縰sing Newtonsoft.Json.Linq; +using System; using System.IO; using System.Net; using System.Net.Mail; @@ -7,6 +8,7 @@ using System.Text.RegularExpressions; using System.Threading; using System.Web; +using System.Xml; namespace Common { @@ -816,8 +818,129 @@ string str = string.Empty; return HttpContext.Current.Request.ServerVariables["HTTP_VIA"] == null ? (HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"] == null ? "0.0.0.0" : HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString()) : (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null ? HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString() : (HttpContext.Current.Request.ServerVariables["HTTP_CLIENT_IP"] == null ? (HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"] == null ? "0.0.0.0" : HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString()) : HttpContext.Current.Request.ServerVariables["HTTP_CLIENT_IP"].ToString())); } + /// <summary> + /// 鑾峰彇瀹㈡埛绔疘P鍦板潃 + /// </summary> + /// <returns>鑻ュけ璐ュ垯杩斿洖鍥為�佸湴鍧�</returns> + public static string GetCurrentUserIp() + { + //濡傛灉瀹㈡埛绔娇鐢ㄤ簡浠g悊鏈嶅姟鍣紝鍒欏埄鐢℉TTP_X_FORWARDED_FOR鎵惧埌瀹㈡埛绔疘P鍦板潃 + string userHostAddress = string.IsNullOrEmpty(HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]) ? null : HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString().Split(',')[0].Trim(); + //鍚﹀垯鐩存帴璇诲彇REMOTE_ADDR鑾峰彇瀹㈡埛绔疘P鍦板潃 + if (string.IsNullOrEmpty(userHostAddress)) + { + userHostAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; + } + //鍓嶄袱鑰呭潎澶辫触锛屽垯鍒╃敤Request.UserHostAddress灞炴�ц幏鍙朓P鍦板潃锛屼絾姝ゆ椂鏃犳硶纭畾璇P鏄鎴风IP杩樻槸浠g悊IP + if (string.IsNullOrEmpty(userHostAddress)) + { + userHostAddress = HttpContext.Current.Request.UserHostAddress; + } + //鏈�鍚庡垽鏂幏鍙栨槸鍚︽垚鍔燂紝骞舵鏌P鍦板潃鐨勬牸寮忥紙妫�鏌ュ叾鏍煎紡闈炲父閲嶈锛� + if (!string.IsNullOrEmpty(userHostAddress) && IsIP(userHostAddress)) + { + return userHostAddress; + } + return "127.0.0.1"; + } - public static string GetTrueWebSitePath() + + //鑾峰彇鏈湴IP鍦板潃,濡傦細192.168.1.102 + public static string GetLocalIPAddress() + { + var host = Dns.GetHostEntry(Dns.GetHostName()); + foreach (var ip in host.AddressList) + { + if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) + { + return ip.ToString(); + } + } + throw new Exception("No network adapters with an IPv4 address in the system!"); + } + + /// <summary> + /// 鏍规嵁IP 鑾峰彇鐗╃悊鍦板潃 + /// </summary> + /// <param name="ip">Ip鍦板潃</param> + /// <param name="AddressClasses">杩斿洖鍦板潃绫诲埆锛�0-鍏ㄥ湴鍧�锛�1-鍥藉缂栫爜锛� 2-鍥藉锛�3-鍦板尯缂栫爜锛�4-鍦板尯鍚嶇О锛�5-鍩庡競鍚嶇О</param> + /// <returns></returns> + public static string GetIpAddress(string ip, string addressClasses) + { + string url = "http://ip-api.com/json/" + ip + "?lang=zh-CN"; + string result = ""; + WebRequest wrt = null; + WebResponse wrp = null; + try + { + wrt = WebRequest.Create(url); + wrt.Credentials = CredentialCache.DefaultCredentials; + + wrp = wrt.GetResponse(); + StreamReader sr = new StreamReader(wrp.GetResponseStream(), Encoding.UTF8); + //鑾峰彇鍒扮殑鏄疛son鏁版嵁 + string html = sr.ReadToEnd(); + + if (string.IsNullOrEmpty(html)) + return null; + + //Newtonsoft.Json璇诲彇鏁版嵁 + JObject obj = Newtonsoft.Json.JsonConvert.DeserializeObject<JObject>(html); + string countryCode = obj["countryCode"] == null ? "" : obj["countryCode"].ToString(); //鍥藉缂栫爜 + string country = obj["country"] == null ? "" : obj["country"].ToString(); //鍥藉 + string region = obj["region"] == null ? "" : obj["region"].ToString(); //鍦板尯缂栫爜 + string regionName = obj["regionName"] == null ? "" : obj["regionName"].ToString(); //鍦板尯鍚嶇О + string city = obj["city"] == null ? "" : obj["city"].ToString(); //鍩庡競鍚嶇О + //string province = obj["regionName"].ToString(); + + //鍦板潃鍏ㄧО + if (addressClasses.Equals("0")) + return country + (city.Equals(regionName) ? city : (regionName + city)); + //鍥藉缂栫爜 + if (addressClasses.Equals("1")) + return countryCode; + //鍥藉鍚嶇О + if (addressClasses.Equals("2")) + return country; + //鍦板尯缂栫爜 + if (addressClasses.Equals("3")) + return region; + //鍦板尯鍚嶇О + if (addressClasses.Equals("4")) + return regionName; + //鍩庡競鍚嶇О + if (addressClasses.Equals("5")) + //return city.Equals(regionName) ? city : (regionName + city); + return city; + + else + return country + (city.Equals(regionName) ? city : (regionName + city)); + + } + catch (Exception) + { + } + finally + { + if (wrp != null) + wrp.Close(); + if (wrt != null) + wrt.Abort(); + } + return result; + } + + /// <summary> + /// 妫�鏌P鍦板潃鏍煎紡 + /// </summary> + /// <param name="ip"></param> + /// <returns></returns> + public static bool IsIP(string ip) + { + return System.Text.RegularExpressions.Regex.IsMatch(ip, @"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$"); + } + + public static string GetTrueWebSitePath() { string path = HttpContext.Current.Request.Path; return path.LastIndexOf("/") == path.IndexOf("/") ? "/" : path.Substring(path.IndexOf("/"), path.LastIndexOf("/") + 1); -- Gitblit v1.9.1