⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 command.cs

📁 集成discuznet论坛 集成discuznet论坛
💻 CS
字号:
using System;
using Motion.DZ.DB;

namespace Motion.DZ
{
    /// <summary>
    /// 
    /// 说明:
    /// Motion.DZ.Command其实是作为一个入口
    /// DBC为数据库操作对象接口,常用到的基本上都封装好了,没有DataReader,用DataTable代替,当然你也完全可以扩展。
    /// IDC为数据库相关方法的接口,可以进行扩展。比如现在只支持Sql和Access数据库,你完全可以再增加MySqlDbCom.cs以实现MySql的支持。
    /// RC为配置信息对象。
    /// 
    /// 
    /// 另:
    /// 其实这个dll除了整合登陆,还可以根据需要扩展很多功能的,关键看大家的需求和创意了。
    /// 当然目前还会有很多不足的地方,希望大家一起帮助完善吧。
    /// 只是别忘了与大家一起分享,共同进步:)
    /// 
    /// http://nt.discuz.net/showforum-35.html
    /// 
    /// 
    /// 最后,2008年,祝大家新年快乐。
    /// 2.14,再祝大家情人节快乐。
    /// 
    ///                      -- Motion 2008.2.13[情人节前夕]
    /// 
    /// To Snow: I wish u would know that how much I love u...
    /// 
    /// 
    /// 
    /// </summary>
    public class Command
    {
        public static IDbProvider DBC;
        public static IDbCommand IDC;

        private static EnCode EC;
        public static ReadConfig RC;

        static Command()
        {
            RC = new ReadConfig();
            EC = new EnCode();
            DBC = (IDbProvider)Activator.CreateInstance(Type.GetType(String.Format("Motion.DZ.DB.{0}Command", RC.DBType), false, true));
            IDC = (IDbCommand)Activator.CreateInstance(Type.GetType(String.Format("Motion.DZ.DB.{0}DbCom", RC.DBType), false, true));
            DBC.vDataBaseConnectionString = RC.BbsDbConnection;
        }

        /// <summary>
        /// 同步注册
        /// </summary>
        /// <param name="username">帐号</param>
        /// <param name="gender">性别</param>
        /// <param name="nickname">昵称</param>
        /// <param name="password">密码(未加密)</param>
        /// <param name="groupid">会员隶属组</param>
        /// <param name="email">邮箱</param>
        /// <param name="regip">注册IP</param>
        /// <param name="qq">QQ号</param>
        /// <param name="msn">MSN</param>
        /// <returns>是否注册成功</returns>
        public static bool Register(string username, int gender, string nickname, string password, int groupid, string email, string regip, string qq, string msn)
        {
            return IDC.Register(username, gender, nickname, password, groupid, email, regip, qq, msn);
        }

        public static bool Register(string username, int gender, string nickname, string password, int groupid, string email)
        {
            return Register(username, gender, nickname, password, groupid, email, RC.UserIP, String.Empty, String.Empty);
        }

        /// <summary>
        /// 修改密码
        /// </summary>
        /// <param name="username">帐号</param>
        /// <param name="password">密码(未加密)</param>
        /// <returns>是否修改成功</returns>
        public static bool ModifyPwd(string username, string password)
        {
            return IDC.ModifyPwd(username, password);
        }

        /// <summary>
        /// 同步登陆
        /// </summary>
        /// <param name="username">帐号</param>
        /// <param name="password">密码(未加密)</param>
        /// <param name="expDays">有效期</param>
        /// <param name="inVisisble">是否隐身</param>
        /// <param name="reFerer">返回页面</param>
        /// <returns>是否登陆成功</returns>
        public static bool Login(string username, string password, int expDays, bool inVisisble, string reFerer)
        {
            return IDC.Login(username, password, expDays, inVisisble, reFerer);
        }
        public static bool Login(string username, string password, int expDays)
        {
            return Login(username, password, expDays, false, "index.aspx");
        }
        public static bool Login(string username, string password)
        {
            return Login(username, password, 0, false, "index.aspx");
        }

        /// <summary>
        /// 同步退出
        /// </summary>
        public static void LoginOut()
        {
            IDC.LoginOut();
        }

        /// <summary>
        /// 当前模式的MD5加密
        /// </summary>
        /// <param name="Input">要加密的字串</param>
        /// <returns>加密后的字串</returns>
        public static string Md5(string Input)
        {
            string md5str = EC.md5(Input);
            return (RC.PasswordMode == 0) ? md5str : md5str.Substring(8, 16);
        }

        /// <summary>
        /// 当前模式的Des加密
        /// </summary>
        /// <param name="Input">要加密的字串</param>
        /// <returns>加密后的字串</returns>
        public static string DesEncode(string Input)
        {
            return EC.DESEncode(Input, RC.PasswordKey);
        }

        /// <summary>
        /// 数据库操作最后一次的错误信息
        /// </summary>
        public static string DbLastError
        {
            get
            {
                return DBC.vErrorResultString;
            }
        }

        /// <summary>
        /// 检测域
        /// </summary>
        /// <param name="doMain">域名</param>
        /// <returns>是否为有效域</returns>
        public static bool IsValidDomain(string doMain)
        {
            string host = System.Web.HttpContext.Current.Request.Url.Host;
            if (String.IsNullOrEmpty(doMain) || host.IndexOf(doMain) < 0) return false;
            System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex(@"^\d+$");
            if (host.IndexOf(".") == -1) return false;
            return !(r.IsMatch(host.Replace(".", String.Empty)));
        }

        /// <summary>
        /// 写入登陆COOKIES信息
        /// </summary>
        /// <param name="userinfo"></param>
        /// <param name="inVisisble"></param>
        /// <param name="reFerer"></param>
        /// <param name="expDays"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        internal static bool WriteLoginCookie(GetUserInfo userinfo, bool inVisisble, string reFerer, int expDays, string password)
        {
            try
            {
                System.Web.HttpCookie cookie = new System.Web.HttpCookie("dnt");
                cookie.Values["userid"] = userinfo.Uid;
                cookie.Values["password"] = System.Web.HttpUtility.UrlEncode(DesEncode(Md5(password)));
                cookie.Values["tpp"] = userinfo.Tpp;
                cookie.Values["ppp"] = userinfo.Ppp;
                cookie.Values["pmsound"] = userinfo.Pmsound;
                cookie.Values["invisible"] = inVisisble ? "0" : "1";
                cookie.Values["referer"] = reFerer;
                cookie.Values["sigstatus"] = userinfo.Sigstatus;
                cookie.Values["expires"] = expDays.ToString();
                if (IsValidDomain(RC.doMain))
                {
                    cookie.Domain = Motion.DZ.Command.RC.doMain;
                }
                if (expDays > 0) cookie.Expires = DateTime.Now.AddDays(expDays);
                System.Web.HttpContext.Current.Response.AppendCookie(cookie);
                return true;
            }
            catch
            {
                return false;
            }
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -