using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Web;
namespace FmallExternal.Helper
{
/// <summary>
/// 获取特定值
/// </summary>
public static class ValueHelper
{
/// <summary>
/// 获取币别符号
/// </summary>
/// <param name="currency">币别</param>
/// <returns>币别符号</returns>
public static string GetCurrencySymbol(string currency)
{
if (string.IsNullOrWhiteSpace(currency))
{
return null;
}
else
{
switch (currency)
{
case "RMB":
return "¥";
case "USD":
return "$";
default:
return null;
}
}
}
/// <summary>
/// 验证码内容生成函数
/// </summary>
/// <param name="vcodeNumber">字数</param>
/// <returns>随机字符串</returns>
public static string RandomNum(int vcodeNumber)
{
if (vcodeNumber >= int.MaxValue) return "";
string[] _vcarray = new string[]{
"2","3","4","5","6","7","8","9",
"A","B","C","D","E","F","G","H",
"J","K","L","M","N","P","Q","R",
"S","T","U","V","W","X","Y","Z",
"a","b","c","d","e","f","g","h",
"i","j","k","m","n","p","q","r",
"s","t","u","v","w","x","y","z"
};
//验证码内容
string validatecode_context = "";
//temp = -1, //记录上次随机数值,尽量避免生产几个一样的随机数
int limit = vcodeNumber + 1;
Random rand = new Random();
for (int i = 1; i < limit; i++)
{
//if (temp != -1)
//{
// rand = new Random(i * temp * unchecked((int)DateTime.Now.Ticks));
//}
int t = rand.Next(_vcarray.Length);
//if (temp != -1 && temp == t)
//{
// return RandomNum(vcode_number);
//}
//temp = t;
validatecode_context += _vcarray[t];
}
return validatecode_context;
}
/// <summary>
/// 获取客户端IP
/// </summary>
/// <param name="skipproxy">是否跳过代理</param>
/// <returns>客户端IP</returns>
public static string GetClientIP(bool skipproxy)
{
string result = null;
if (skipproxy)
{//忽略代理,获取客户端IP或最后一个代理IP
result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
else
{
#region 有代理,获取客户端IP,有伪造可能
foreach (var header in new[] { "HTTP_CLIENT_IP", "HTTP_X_FORWARDED_FOR", "HTTP_FROM", "REMOTE_ADDR" })
{
string temp = HttpContext.Current.Request.ServerVariables[header];
if (!string.IsNullOrEmpty(temp) && ValidateHelper.IsIPAddress(temp))
{
result = temp;
break;
}
}
if (string.IsNullOrEmpty(result))
{
result = System.Web.HttpContext.Current.Request.UserHostAddress;
}
if (string.IsNullOrEmpty(result))
{
#region get local(LAN) Connected ip address
//This is for Local(LAN) Connected ID Address
string stringHostName = Dns.GetHostName();
//Get Ip Host Entry
IPHostEntry ipHostEntries = Dns.GetHostEntry(stringHostName);
//Get Ip Address From The Ip Host Entry Address List
IPAddress[] arrIpAddress = ipHostEntries.AddressList;
if (arrIpAddress.Length >= 2)
{
result = arrIpAddress[arrIpAddress.Length - 2].ToString();
}
else if (arrIpAddress.Length > 0)
{
result = arrIpAddress[0].ToString();
}
else
{
arrIpAddress = Dns.GetHostAddresses(stringHostName);
if (arrIpAddress.Length >= 0)
{
result = arrIpAddress[0].ToString();
}
else
{
result = "127.0.0.1";
}
}
#endregion
}
//多个代理情况处理,一般第一个会是真实iP
if (!string.IsNullOrEmpty(result))
{
result = result.Split(',')[0].Trim();
}
#endregion
}
if (result == "::1")
{
return "127.0.0.1";
}
else if (ValidateHelper.IsIPAddress(result))
{
return result;
}
else
{
return "invalid ip";
}
}
/// <summary>
/// 跳过代理获取客户端IP
/// </summary>
/// <returns>客户端IP</returns>
public static string GetClientIP()
{
return GetClientIP(false);
}
}
}
ValueHelper
最新推荐文章于 2023-07-10 16:13:04 发布