ValueHelper

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);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值