📄 command.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 + -