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

📄 dv_api_serv.aspx.cs

📁 动网论坛系列产品倍受用户赞誉的就是强大的功能和出色的用户体验表现
💻 CS
📖 第 1 页 / 共 2 页
字号:
						return false;
					}

					// 检查用户名是否已被注册
					if (int.Parse(conn.GetScalar("SELECT COUNT(1) FROM " + Fetch.TablePrefix + "user WHERE username=@UserName", conn.CreateParameter("@UserName", DbType.String, userName)).ToString()) > 0)
					{
						this.__Throw("用户名“" + userName + "”已被注册!");
						return false;
					}
				}
			}

			return true;
		}

		//	注册用户
		private void __RegisterUser()
		{
			// 检查当前论坛是否允许注册新会员
			if (!bool.Parse(config["EnableUserRegistration"]))
			{
				this.__Throw("论坛暂时不允许注册新会员!");
				return;
			}

			// 对请求中提供的用户名进行验证,检查是否符合注册要求。
			if (!__CheckUser())
			{
				return;
			}

			//检查密码
			string user_pwd = __RequestData["password"];
			if (null == user_pwd || user_pwd.Length < 6 || user_pwd.Length > 20)
			{
				this.__Throw("密码应为6-20位");
				return;
			}

			string question = __RequestData["question"];
			if (null == question || 0 == question.Length)
			{
				this.__Throw("请填写找回密码的问题!");
				return;
			}

			string answer = __RequestData["answer"];
			if (null == answer || 0 == answer.Length)
			{
				this.__Throw("请填写找回密码的问题答案!");
				return;
			}

			string user_sex = __RequestData["gender"];
			if (null == user_sex || 0 == user_sex.Length || "1" == user_sex)
			{
				user_sex = "false";	//	性别: 男
			}
			else
			{
				user_sex = "true";	//	性别: 女
			}

			// 将用户信息插入数据库
			int effected_rows = conn.ExecuteNonQuery(
				"INSERT INTO " + Fetch.TablePrefix + "user(username, [UserPassword], UserEP, UserSex, UserEmail, UserQuesion, UserAnswer, UserFace, UserInfo, usergroupid) VALUES(@UserName, @UserPassword, 0, @UserSex, @UserEmail, @UserQuesion, @UserAnswer, '1.gif', '', 9)",
				conn.CreateParameter("@UserName", DbType.String, __RequestData["username"]),
				conn.CreateParameter("@UserPassword", DbType.String, this.__MD5(__RequestData["password"])),
				// Dvbbs.Net.dv_user.usersex=0为男
				conn.CreateParameter("@UserSex", DbType.Boolean, user_sex),
				conn.CreateParameter("@UserEmail", DbType.String, __RequestData["email"]),
				conn.CreateParameter("@UserQuesion", DbType.String, question),
				conn.CreateParameter("@UserAnswer", DbType.String, answer)
			);
			if (effected_rows > 0)
			{
				this.__SetSuccessMessage("成功注册!");
			}
			else
			{
				this.__Throw("注册失败!错误信息:未知的原因!");
			}
		}

		//	用户登录
		private void __UserLogin()
		{
			// 检查用户名
			string user_name = __RequestData["username"];
			if (null == user_name || 0 == user_name.Length)
			{
				this.__Throw("请输入用户名!");
				return;
			}

			// 检查密码
			string user_pwd = __RequestData["password"];
			if (null == user_pwd || 0 == user_pwd.Length)
			{
				this.__Throw("请输入密码!");
				return;
			}

			// 检查目标 IP 是否被拒绝登录
			if (Dvbbs.bbs.Handlers.UserHandler.IsDeniedIp(conn))
			{
				this.__Throw("对不起,你所在的IP段已被拒绝登录本论坛。");
				return;
			}

			// 从数据库中取出该用户的数据
			DataTable dt = conn.GetDataTable("SELECT TOP 1 UserLastIP, randpass, buycredit, sellcredit,trafutong, UserTopic, UserPost, userisclassical, UserDel, UserLogins, UserFace, LastLogin, UserGroupID, UserPower, LockUser, unlocktime, UserPassword,truepassword, UserEP, [UserMoney], UserID, UserName, JoinDate, isactivated, albumtotal, favalbumtotal, favphotototal FROM " + Fetch.TablePrefix + "user WHERE username=@UserName and isdelete=0", conn.CreateParameter("@UserName", DbType.String, user_name));

			// 检查数据为中是否存在此用户
			if (null == dt || 0 == dt.Rows.Count)
			{
				Cookie.Remove("user");
				this.__Throw("登录失败,用户名不存在!");
				return;
			}

			DataRow dr = dt.Rows[0];
			
			// 检查用户是否已被锁定
			if (bool.Parse(dr["LockUser"].ToString()) && !(dr["unlocktime"] is DBNull))
			{
				if ((DateTime)dr["unlocktime"] > DateTime.Today)
				{
					Cookie.Remove("user");
					string unlockDay = ((DateTime)dr["unlocktime"]).ToString("D");
					this.__Throw("该帐号已经被冻结,暂时不能使用,解除期限为: " + unlockDay);
					return;
				}
			}

			// 检查密码是否正确
			string encrypt_password = Text.MD5(user_pwd);
			if (!Text.ComparePassword(dr["UserPassword"].ToString(), encrypt_password))
			{
				Cookie.Remove("user");
				this.__Throw("登录失败,密码不正确!");
				return;
			}

			// 检查用户是否已被激活
			if (!bool.Parse(dr["isactivated"].ToString()))
			{
				Cookie.Remove("user");
				this.__Throw("对不起,您的注册帐号尚未被管理员激活。论坛目前设置新注册会员需要审核通过才能使用,请牢记注册信息,待管理员审核激活后才可登录。");
				return;
			}

			// 登录信息检验通过,将用户登录状态保存在 Cookies 里
			HttpCookie cUser = Cookie.Get("user");
			string isFade    = "0";

			string randpass = Text.MD5(new Random().Next(6000,90000).ToString());

			if (null == cUser)
			{
				cUser  = Cookie.Set("user");
			}
			else
			{
				isFade = cUser.Values["fade"];
			}
			cUser.Values["name"]			= HttpContext.Current.Server.UrlEncode(user_name.Trim());
			cUser.Values["userid"]			= dr["userid"].ToString();
			cUser.Values["roleid"]			= dr["usergroupid"].ToString();
			cUser.Values["power"]			= dr["usergroupid"].ToString();
			cUser.Values["experience"]		= dr["UserEP"].ToString();
			cUser.Values["money"]			= dr["UserMoney"].ToString();
			cUser.Values["token1"]			= Text.GenerateToken(dr["usergroupid"].ToString() + encrypt_password + user_name + ((DateTime)dr["joindate"]).ToString("yyyy-MM-dd H:mm:ss"));
			cUser.Values["token2"]			= encrypt_password;
			cUser.Values["jointime"]		= ((DateTime)dr["joindate"]).ToString("G");
			cUser.Values["fade"]			= isFade;
			cUser.Values["face"]			= Dvbbs.Utils.Text.TextEncode(dr["UserFace"].ToString());
			cUser.Values["userpost"]		= dr["UserPost"].ToString();
			cUser.Values["userisclassical"]	= dr["userisclassical"].ToString();
			cUser.Values["userdel"]			= dr["UserDel"].ToString();
			cUser.Values["userlogins"]		= dr["UserLogins"].ToString();
			cUser.Values["usertopic"]		= dr["UserTopic"].ToString();
			cUser.Values["trafutong"]		= dr["trafutong"].ToString();
			cUser.Values["buycredit"]		= dr["buycredit"].ToString();
			cUser.Values["sellcredit"]		= dr["sellcredit"].ToString();
			cUser.Values["albumtotal"]		= dr["albumtotal"].ToString();
			cUser.Values["favalbumtotal"]	= dr["favalbumtotal"].ToString();
			cUser.Values["favphotototal"]	= dr["favphotototal"].ToString();
			cUser.Values["randpass"]		= randpass;
			cUser.Values["logdate"]			= System.DateTime.Now.ToString();
			cUser.Values["UserLastIP"]		= dr["UserLastIP"].ToString();
			cUser.Values["dv_truepassword"] = randpass;
			int save_days = 0;
			if (null != __RequestData["savecookie"] && __RequestData["savecookie"].Length > 0)
			{
				save_days = int.Parse(__RequestData["savecookie"]);
			}
			if (save_days > 0)
			{
				cUser.Expires = DateTime.Today.AddDays(save_days);
				cUser.Values["expires"] = DateTime.Today.AddDays(save_days).ToString("G");
			}
			else
			{
				if (cUser.Values["expires"] != string.Empty && cUser.Values["expires"] != null)
				{
					cUser.Expires = DateTime.Parse(cUser.Values["expires"]);
				}
			}
			Cookie.Save(cUser);      
			SessionState.Set("pop_strategy" + Fetch.UrlEncode(user_name), null);
			SessionState.Set("exp_strategy" + Fetch.UrlEncode(user_name), null);
			SessionState.Set("mng_strategy" + Fetch.UrlEncode(user_name), null);

			// 设置用户状态 
			conn.ExecuteNonQuery(
				"UPDATE " + Fetch.TablePrefix + "user SET LockUser=0, isonline=1, randpass=@RandPass, LastLogin=" + conn.DbDateFunc + ", UserLogins=UserLogins+1, UserLastIP=@UserLastIp, truepassword=@TruePassword WHERE username=@UserName",
				conn.CreateParameter("@RandPass", DbType.String, randpass),
				conn.CreateParameter("@UserLastIp", DbType.String, Fetch.UserIp),
				conn.CreateParameter("@UserName", DbType.String, user_name),
				conn.CreateParameter("@TruePassword", DbType.String, randpass)
			);

			// 删除不需要的 Cookies
			Caching.Remove("OnlineList");

			this.__SetSuccessMessage("登录成功!");
		}

		//	更新用户资料
		private void __UpdateUserInfo()
		{
			// 对请求中提供的用户名进行验证,检查是否符合要求。(如果有电子邮件,此方法也会对电子邮件进行检查)
			if (!__CheckUser())
			{
				return;
			}

//			// 检查密码
//			if (null != __RequestData["password"] && 0 == __RequestData["password"].Length)
//			{
//				this.__Throw("更新用户资料时发生错误:请填写密码!");
//				return;
//			}
//
//			// 检查找回密码的问题
//			if (null != __RequestData["question"] && 0 == __RequestData["question"].Length)
//			{
//				this.__Throw("更新用户资料时发生错误:如果要修改找回密码的问题,请填写!");
//				return;
//			}
//
//			// 检查找回密码的问题答案
//			if (null != __RequestData["answer"] && 0 == __RequestData["answer"].Length)
//			{
//				this.__Throw("更新用户资料时发生错误:如果要修改找回密码的问题答案,请填写!");
//				return;
//			}

			System.Text.StringBuilder sb = new System.Text.StringBuilder ("UPDATE " + Fetch.TablePrefix + "user SET username=username");

		// Start 拼接 SQL 语句
			// 更新密码
			if (null != __RequestData["password"] && __RequestData["password"].Length > 0)
			{
				sb.Append(", UserPassword='" + Text.SqlEncode(this.__MD5(__RequestData["password"])) + "'");
			}
			// 更新电子邮件
			if (null != __RequestData["email"] && __RequestData["email"].Length > 0)
			{
				sb.Append(", UserEmail='" + Text.SqlEncode(__RequestData["email"]) + "'");
			}
			// 更新找回密码的问题
			if (null != __RequestData["question"] && __RequestData["question"].Length > 0)
			{
				sb.Append(", UserQuesion='" + Text.SqlEncode(__RequestData["question"]) + "'");
			}
			// 更新找回密码的问题答案
			if (null != __RequestData["answer"] && __RequestData["answer"].Length > 0)
			{
				sb.Append(", UserAnswer='" + Text.SqlEncode(this.__MD5(__RequestData["answer"])) + "'");
			}
			// 更新真实姓名
			if (null != __RequestData["truename"] && __RequestData["truename"].Length > 0)
			{
				sb.Append(", truename='" + Text.SqlEncode(__RequestData["truename"]) + "'");
			}
			// 更新性别
			if (null != __RequestData["gender"] && __RequestData["gender"].Length > 0)
			{
				sb.Append(", UserSex=" + ("0" == __RequestData["gender"] ? "1" : "0"));
			}
			// 更新生日
			if (null != __RequestData["birthday"] && __RequestData["birthday"].Length > 0)
			{
				// Nothing to do
			}
			// 更新 QQ
			if (null != __RequestData["qq"] && __RequestData["qq"].Length > 0)
			{
				// Nothing to do
			}
			// 更新 MSN
			if (null != __RequestData["msn"] && __RequestData["msn"].Length > 0)
			{
				// Nothing to do
			}
			// 更新移动电话
			if (null != __RequestData["mobile"] && __RequestData["mobile"].Length > 0)
			{
				// Nothing to do
			}
			// 更新普通电话
			if (null != __RequestData["telephone"] && __RequestData["telephone"].Length > 0)
			{
				// Nothing to do
			}
			// 更新用户联系地址
			if (null != __RequestData["address"] && __RequestData["address"].Length > 0)
			{
				// Nothing to do
			}
			// 更新用户邮政编码
			if (null != __RequestData["zipcode"] && __RequestData["zipcode"].Length > 0)
			{
				// Nothing to do
			}
			// 更新用户个人主页
			if (null != __RequestData["homepage"] && __RequestData["homepage"].Length > 0)
			{
				// Nothing to do
			}
			// 更新用户注册时所在的IP
			if (null != __RequestData["userip"] && __RequestData["userip"].Length > 0)
			{
				// Nothing to do
			}
			// 更新用户的注册时间
			if (null != __RequestData["jointime"] && __RequestData["jointime"].Length > 0)
			{
				// Nothing to do
			}
			// 更新用户的发帖量
			if (null != __RequestData["posts"] && __RequestData["posts"].Length > 0)
			{
				// Nothing to do
			}
//			sb.Append(" WHERE username='" + Text.SqlEncode(__RequestData["username"]) + "' AND UserPassword='" + Text.SqlEncode(this.__MD5(__RequestData["password"])) + "'");
			sb.Append(" WHERE username='" + Text.SqlEncode(__RequestData["username"]) + "'");
		// End 拼接 SQL 语句
			
			// 执行 SQL 语句
			conn.ExecuteNonQuery(sb.ToString());

			this.__SetSuccessMessage("用户资料更新成功!");
		}

		//	删除用户
		private void __DeleteUser()
		{
			// 对请求中提供的用户名进行验证,检查是否符合要求。(如果有电子邮件,此方法也会对电子邮件进行检查)
			string req_user_name = __RequestData["username"];
			if (null == req_user_name || 0 == req_user_name.Length)
			{
				this.__Throw("删除用户资料失败,原因是:未设置用户名!");
				return;
			}

			string[] user_name_list = req_user_name.Split(',');
			if (null == user_name_list || 0 == user_name_list.Length)
			{
				this.__Throw("删除用户资料失败,原因是:用户名格式不合法!");
				return;
			}

			// 检查每一个要删除的用户名是否合法
			for (int i = 0; i < user_name_list.Length; i++)
			{
				if (!__CheckUser(user_name_list[i]))
				{
					return;
				}
			}

			System.Text.StringBuilder sb = new System.Text.StringBuilder("' '");
			for (int i = 0; i < user_name_list.Length; i++)
			{
				sb.Append(", '" + Text.SqlEncode(user_name_list[i]) + "'");
			}

			conn.ExecuteNonQuery("UPDATE " + Fetch.TablePrefix + "user SET isdelete=1 WHERE username IN(" + sb.ToString() + ")");

			this.__SetSuccessMessage("已成功地删除了指定的用户!");
		}

		//	查询用户信息
		private void __GetUserInfo()
		{
			// 对请求中提供的用户名进行验证,检查是否符合要求。(如果有电子邮件,此方法也会对电子邮件进行检查)
			if (!__CheckUser())
			{
				return;
			}

			// 从数据库中取出用户数据
			string fld_list = null;
			if (conn.Provider == DbProviderEnum.Access)
			{
				fld_list = "username, UserEmail AS email, UserQuesion AS question, UserAnswer AS answer, truename, IIF(UserSex=0, 1, 0) AS gender, '' AS birthday, '' AS qq, '' AS msn, '' AS mobile, '' AS telephone, '' AS address, '' AS zipcode, '' AS homepage, firstip AS userip, JoinDate AS jointime, '' AS experience, '' AS ticket, '' AS valuation, UserMoney AS balance, UserPost AS posts, LockUser AS userstatus";
			}
			else
			{
				fld_list = "username, UserEmail AS email, UserQuesion AS question, UserAnswer AS answer, truename, (CASE WHEN UserSex=0 THEN 1 ELSE 0 END) AS gender, '' AS birthday, '' AS qq, '' AS msn, '' AS mobile, '' AS telephone, '' AS address, '' AS zipcode, '' AS homepage, firstip AS userip, JoinDate AS jointime, '' AS experience, '' AS ticket, '' AS valuation, UserMoney AS balance, UserPost AS posts, LockUser AS userstatus";
			}
			DataTable dt = conn.GetDataTable(
				"SELECT " + fld_list + " FROM " + Fetch.TablePrefix + "user WHERE username=@UserName",
				conn.CreateParameter("@UserName", DbType.String, __RequestData["username"])
			);

			if (null == dt || 0 == dt.Rows.Count)
			{
				this.__Throw("您要查找的用户不存在!");
				return;
			}

			DataRow dr = dt.Rows[0];

			// 设置可选的 XML 列表
			ResponseChoiceList["savecookie"] = "0";
			for (int i = 0; i < dt.Columns.Count; i++)
			{
				ResponseChoiceList[dt.Columns[i].ColumnName] = dr[dt.Columns[i]].ToString();
			}
		}

		// Properties
		private NameValueCollection ResponseChoiceList
		{
			get
			{
				if (null == __ResponseChoiceList)
				{
					__ResponseChoiceList = new NameValueCollection();
				}
				return __ResponseChoiceList;
			}
		}
	}
}

⌨️ 快捷键说明

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