Exemplo n.º 1
0
        /// <summary>
        /// 激活用户,激活成功返回true,激活失败返回false
        /// </summary>
        /// <param name="user">要激活的,包含完整信息的User类</param>
        /// <param name="verifyCode">页面接受的验证码</param>
        /// <returns>激活成功返回ture,激活失败返回false</returns>
        public static Boolean CheckUser(User user, Guid verifyCode)
        {
            Boolean result = true;
            if (!isLegalNewUser(user))
            {
                result = false;
            }
            //这里的数据检查比较麻烦。
            if (user.User_verify_code == null
                || verifyCode == null
                || user.User_isChecked == true)
            {
                result = false;
            }
            else
            {
                if (user.User_verify_code == verifyCode)
                {
                    user.User_isChecked = true;
                    UserData userData = UserData.GetNewInstance();
                    result = userData.UpdateUserInfo(user);
                }
                else
                {
                    result = false;
                }
            }

            return result;
        }
Exemplo n.º 2
0
        /// <summary>
        /// BLL层创建用户账号,由UI层调用,负责数据完整性检查和调用DAL层同名函数
        /// </summary>
        /// <param name="user">要创建的账号类</param>
        /// <returns>int,大于0说明成功,小于等于0说明调用失败。</returns>
        public static int CreateUser(User user)
        {
            int res = 0;
            /*
                数据完整性检查
             */
            if (isLegalNewUser(user))
            {
                /*
                    添加用户,数据库中有userAccount唯一约束,因此这里加上异常处理
                 */
                try
                {
                    UserData UserData_Create = UserData.GetNewInstance();
                    res = UserData_Create.CreateUser(user);
                    SendVerifyMailToNewUser(user);
                }
                catch (Exception)
                {
                    res = 0;
                }

            }
            else
            {
                res = 0;
            }
            return res;
        }
Exemplo n.º 3
0
 /// <summary>
 /// 注册新用户,无数据验证,数据验证应该在BLL层完成
 /// </summary>
 /// <param name="user">需要新创建的UI.User类</param>
 /// <returns>影响的行数,大于0说明成功</returns>
 public int CreateUser(User user)
 {
     int res;
     avfunEntities DataEntity = DataEntityManager.GetDataEntity();
     USER NewUSER = this.ConvertUserToUSER(user);
     DataEntity.USER.AddObject(NewUSER);
     res = DataEntity.SaveChanges();
     return res;
 }
Exemplo n.º 4
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //每1分钟才能发一次找回密码请求
            Session.Timeout = 1;
            if (!Page.IsPostBack)
            {
                //第一次访问页面
                ForgetPasswordForm.Visible = true; //找回密码窗体可见
                ForgetPswInfo.Text = "请输入注册邮箱:"; //重设提示信息
                ForgetPswInfo.Visible = true; //提示信息可见
            }
            else
            {
                //用户提交
                User forgetUser = new User();
                String userAccount = Request.Form["UserAccount"].Trim();
                forgetUser.User_account = userAccount;
                //防止email轰炸
                if (Session[forgetUser.User_account] == null)
                {
                    if (UserOpr.GetForgetPassword(forgetUser))
                    {
                        //成功取回密码
                        ForgetPswInfo.Text = "取回密码成功!请进入您的注册邮箱查收密码,3秒后跳转到主页";
                        //重定向
                        HtmlMeta RedirectMeta = new HtmlMeta(); //重定向用Meta标签
                        RedirectMeta.HttpEquiv = "refresh"; //指定行为为跳转
                        RedirectMeta.Content = "3;url=" + ReadWebConfig.GetAppSettingValue("Domain"); //时间为三秒,跳转到首页
                        this.Page.Header.Controls.Add(RedirectMeta);

                        //分配Session避免邮箱轰炸
                        Session.Add(forgetUser.User_account, DateTime.Now.ToString());

                        //UI操作
                        ForgetPasswordForm.Visible = false; //取回密码窗体不可见
                        ForgetPswInfo.Visible = true;
                    }
                    else
                    {
                        ForgetPswInfo.Text = "取回密码失败,请检查输入的账户是否正确";
                        ForgetPasswordForm.Visible = true;
                        ForgetPswInfo.Visible = true;
                    }
                }
                else
                {
                    //给出误导信息,实际上一分钟就行,防止黑客利用
                    ForgetPswInfo.Text = "您的操作过于频繁,请3分钟后再试";
                    ForgetPasswordForm.Visible = true;
                    ForgetPswInfo.Visible = true;
                }

            }
        }
Exemplo n.º 5
0
 /// <summary>
 /// BAL修改用户密码,包括数据检验,成功返回true否则返回false
 /// </summary>
 /// <param name="user">要修改的用户</param>
 /// <param name="newPassword">新密码,应为32位MD5大写字符串</param>
 /// <returns>成功返回true否则false</returns>
 public static Boolean ChagneUserPassword(User user, String newPassword)
 {
     Boolean result = true;
     if (newPassword.Length != 32) //新密码长度检验
         result = false;
     if (!isLegalNewUser(user))
         result = false;
     UserData userData = UserData.GetNewInstance();
     result =  userData.ChangeUserPassword(user, newPassword);
     return result;
 }
Exemplo n.º 6
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Admin loggedAdmin = AdminOpr.isLogged(Request);
            if (loggedAdmin == null)
            {
                lblLoginStatus.Text = "您未登录或已登录过期,请重新登录。3秒后转向登录页面";
                lblLoginStatus.Visible = true;
                //重定向
                HtmlMeta RedirectMeta = new HtmlMeta(); //重定向用Meta标签
                RedirectMeta.HttpEquiv = "refresh"; //指定行为为跳转
                RedirectMeta.Content = "3;url=admin_login.aspx"; //时间为三秒,跳转到首页
                this.Page.Header.Controls.Add(RedirectMeta);
            }
            else
            {
                try
                {
                    User toDelUser = new User();
                    //这里有可能出错要用try...catch
                    Guid userID = new Guid(Request.QueryString["user_id"]);
                    toDelUser.User_id = userID;
                    User entireUser = UserOpr.GetUserByID(toDelUser);
                    if (entireUser != null)
                    {
                        //找到了
                        //删除
                        entireUser.User_isDeleted = true;
                        if (UserOpr.UpdateUserInfo(entireUser))
                        {
                            lblLoginStatus.Text = "删除用户成功";
                            lblLoginStatus.Visible = true;
                        }
                        else
                        {
                            lblLoginStatus.Text = "删除用户失败";
                            lblLoginStatus.Visible = true;
                        }
                    }
                    else
                    {
                        lblLoginStatus.Text = "没有这个用户";
                        lblLoginStatus.Visible = true;
                    }
                }
                catch
                {
                    lblLoginStatus.Text = "用户ID格式不正确";
                    lblLoginStatus.Visible = true;
                }

            }
        }
Exemplo n.º 7
0
 /// <summary>
 /// 根据用户和课程创建订单,注意,所有要这么干的地方,必须调用该函数而不是new一个出来!
 /// </summary>
 /// <param name="course">用户购买的课程</param>
 /// <param name="user">登录的用户</param>
 /// <returns>一个Order类的Instance</returns>
 public static Order CreateOrderByUserAndCourse(Course course, User user)
 {
     Order result = null;
     if (UserOpr.isLegalNewUser(user)
         && CourseOpr.isLegalCourse(course))
     {
         result = new Order();
         result.Order_course = course.Course_id;
         result.Order_user = user.User_id;
     }
     else
     {
         result = null;
     }
     return result;
 }
Exemplo n.º 8
0
 /// <summary>
 /// 为了拷贝其他实例的构造函数
 /// </summary>
 /// <param name="user">要拷贝的实例</param>
 public User(User user)
 {
     this.u_id = user.U_id;
     this.user_id = user.User_id;
     this.user_account = user.User_account;
     this.user_password = user.User_password;
     this.user_nickname = user.User_nickname;
     this.user_sex = user.User_sex;
     this.user_head = user.User_head;
     this.user_isDeleted = user.User_isDeleted;
     this.user_isChecked = user.User_isChecked;
     this.user_last_login_date = user.User_last_login_date;
     this.user_last_login_ip = user.User_last_login_ip;
     this.user_money = user.User_money;
     this.user_introduction = user.User_introduction;
     this.user_verify_code = user.User_verify_code;
     this.user_timestamp = user.User_timestamp;
     //TimeStamp没改。
 }
Exemplo n.º 9
0
        /// <summary>
        /// DAL层重设密码函数,成功返回true,否则返回false
        /// </summary>
        /// <param name="user">要改变密码的user,account必填,password必填,为重新生成的密码</param>
        /// <returns>成功返回true,否则false</returns>
        public Boolean GetForgetPassword(User user)
        {
            Boolean result = false;
            avfunEntities DataEntity = DataEntityManager.GetDataEntity();

                try
                {
                    USER DestUser = (from usr in DataEntity.USER
                             where usr.user_account == user.User_account //找目标user,LINQ里面字符串相等就是 ==!
                             select usr).Single();
                    DestUser.user_password = user.User_password; //更改密码为新生成的8位随机字符串
                    DataEntity.SaveChanges();
                    result = true;
                }
                catch (Exception)
                {
                    result = false;
                }

            return result;
        }
Exemplo n.º 10
0
 /// <summary>
 /// 修改用户密码,User为登录的用户,newPassword为新密码,成功返回true否则返回false
 /// </summary>
 /// <param name="user">登录的用户</param>
 /// <param name="newPassword">新密码(MD5大写字符串)</param>
 /// <returns>成功true失败false</returns>
 public Boolean ChangeUserPassword(User user, String newPassword)
 {
     Boolean result = true;
     avfunEntities DataEntity = DataEntityManager.GetDataEntity();
     try
     {
         USER OldUSER = (from usr in DataEntity.USER
                         where usr.user_account == user.User_account   //账号
                         && usr.user_password == user.User_password  //密码
                         && usr.user_timestamp == user.User_timestamp //时间戳,注意,这个很重要!确保一致性!
                         select usr
                             ).Single();
         OldUSER.user_password = newPassword;
         DataEntity.SaveChanges();
         result = true;
     }
     catch (Exception)
     {
         result = false;
     }
     return result;
 }
Exemplo n.º 11
0
        /// <summary>
        /// 检查参数中的User类实例是否可以作为合法的登录用户信息
        /// </summary>
        /// <param name="user">要检查的User类</param>
        /// <returns>合法返回true,否则false</returns>
        private static Boolean isLegalLoginInfo(User user)
        {
            Boolean result = true;
            if (user.User_account == null ||
                user.User_account.Equals("") ||
                user.User_account.Length > 64)
                result = false;
            if (user.User_password == null ||
                user.User_password.Length != 32 ||  //其实这不太可能,只判断是否等于32就好了,因为到BLL的全MD5过
                user.User_password.Equals(""))
                result = false;

            return result;
        }
Exemplo n.º 12
0
 /// <summary>
 /// 更新用户信息,会有isLegalLoginInfo检查的。成功返回true否则返回false
 /// </summary>
 /// <param name="user">要更新的user信息</param>
 /// <returns>成功返回true否则返回false</returns>
 public static Boolean UpdateUserInfo(User user)
 {
     Boolean result = true;
     /* 数据检验 */
     if (!isLegalNewUser(user))
     {
         result = false;
     }
     else
     {
         UserData userData = UserData.GetNewInstance();
         result = userData.UpdateUserInfo(user);
     }
     return result;
 }
Exemplo n.º 13
0
        /// <summary>
        /// 向新注册的用户发送激活账户的邮件
        /// public的原因是因为,重发确认信功能中也要用到
        /// </summary>
        /// <param name="newUser">刚刚创建的用户对应的UI.User实例</param>
        public static void SendVerifyMailToNewUser(User newUser)
        {
            #region 准备阶段
            //读取信息
            /* WebConfig内容
             *     <add key ="domain" value="http://*****:*****@gmail.com"/>
            <add key ="MailPassword" value="hhxbyfdopdadawxz"/>
            <add key ="MailNickname" value ="Avfun管理组"/>
            <add key ="MailSubject" value ="【Avfun用户管理组账号激活提醒】"/>
             * */
            String WebDomain = ReadWebConfig.GetAppSettingValue("Domain");
            String MailAddress = ReadWebConfig.GetAppSettingValue("MailAddress");
            String MailPassword = ReadWebConfig.GetAppSettingValue("MailPassword");
            String MailNickname = ReadWebConfig.GetAppSettingValue("MailNickname");
            String MailSubject = ReadWebConfig.GetAppSettingValue("MailSubject");
            #endregion
            #region 发信模块
            MailMessage mail = new MailMessage();

            //前面是發信email後面是顯示的名稱
            mail.From = new MailAddress(MailAddress, MailNickname);
            //收信者email
            mail.To.Add(newUser.User_account);
            //設定優先權
            mail.Priority = MailPriority.Normal;
            //標題
            mail.Subject = MailSubject + newUser.User_nickname;

            //內容
            mail.Body =
                "尊敬的Avfun用户:" + newUser.User_nickname + ":"
                + "<br/>您好 "
                + "<br/>您的激活地址是"
                // WebDomain 以 "/"结尾
                + "<br/>" + WebDomain + "checkUser.aspx?VerifyCode=" + newUser.User_verify_code
                + "<br/>请复制到浏览器中打开,完成激活"
                + "<br/> Avfun管理组,敬上";

            //內容使用html
            mail.IsBodyHtml = true;

            //設定gmail的smtp
            SmtpClient MySmtp = new SmtpClient("smtp.gmail.com", 587);

            //您在gmail的帳號密碼
            MySmtp.Credentials = new System.Net.NetworkCredential(MailAddress, MailPassword);

            //開啟ssl
            MySmtp.EnableSsl = true;

            //發送郵件
            MySmtp.Send(mail);

            //放掉宣告出來的MySmtp
            MySmtp = null;

            //放掉宣告出來的mail
            mail.Dispose();
            #endregion 发信模块
        }
Exemplo n.º 14
0
 /// <summary>
 /// 将BLL层传递过来的UI.User对象转换为Enitity映射中的USER对象,所有属性拷贝
 /// </summary>
 /// <param name="user">UI.User对象,由BLL层传递</param>
 /// <returns>转换完毕的USER对象</returns>
 private USER ConvertUserToUSER(User user)
 {
     USER ResultUSER = new USER();
     ResultUSER.u_id = user.U_id;
     ResultUSER.user_id = user.User_id;
     ResultUSER.user_head = user.User_head;
     ResultUSER.user_account = user.User_account;
     ResultUSER.user_introduction = user.User_introduction;
     ResultUSER.user_isChecked = user.User_isChecked;
     ResultUSER.user_isDeleted = user.User_isDeleted;
     ResultUSER.user_last_login_ip = user.User_last_login_ip;
     ResultUSER.user_last_login_time = user.User_last_login_date;
     ResultUSER.user_money = user.User_money;
     ResultUSER.user_nickname = user.User_nickname;
     ResultUSER.user_password = user.User_password;
     ResultUSER.user_sex = user.User_sex;
     ResultUSER.user_timestamp = user.User_timestamp;
     ResultUSER.user_verify_code = user.User_verify_code;
     return ResultUSER;
 }
Exemplo n.º 15
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                //第一次访问
                LoginForm.Visible = true;
            }
            else
            {
                //提交回来了,校验。
                String userAccount = Request.Form["UserAccount"].Trim();
                String userPassword = Request.Form["UserPassword"];
                String loginVerifyCode = Request.Form["LoginVerifyCode"];

                //先校验验证码
                if (
                    Session[LoginVerifyCodeGenerator.strIdentify] != null
                    && Session[LoginVerifyCodeGenerator.strIdentify].ToString().ToUpper().Equals
                         (loginVerifyCode.ToUpper()     )
                    && !loginVerifyCode.Equals("")
                    && loginVerifyCode != null
                     //以上三行防止后退提交用的
                   )
                {
                    Session.Remove(LoginVerifyCodeGenerator.strIdentify); //防止后退提交
                    //验证码校验通过,设定要取回的User的账号密码
                    User verifyUser = new User();
                    verifyUser.User_account = userAccount;
                    verifyUser.User_password = UserOpr.MD5(userPassword);
                    //验证用户是否是合法登录请求
                    User entireUser = UserOpr.isLegalLogin(verifyUser);
                    if (entireUser == null) //账号或密码错误,未注册,都是这个
                    {
                        LoginInfo.Text = "账号或密码错误";
                        LoginForm.Visible = true;
                    }
                    else
                    {
                        //登录成功,更改提示信息,更新登录信息中的IP和日期,这里记得换成UpdateUserInfo!

                        entireUser.User_last_login_date = DateTime.Now; //获取当前登录日期
                        entireUser.User_last_login_ip = HttpContext.Current.Request.UserHostAddress; //最后一次登录ip
                        UserOpr.UpdateUserInfo(entireUser);
                        LoginInfo.Text = "登录成功!3秒后跳转回主页";
                        //授予Cookies,相当于授权了

                        HttpCookie userAccountCookie = new HttpCookie("userAccount");
                        HttpCookie userPasswordCookie = new HttpCookie("userPassword");
                        userAccountCookie.Value = verifyUser.User_account;
                        userPasswordCookie.Value = verifyUser.User_password;

                        if (RememberMe.Checked) //这个判断很诡异,貌似Request.Form不好用的样子。
                        {
                            //如果选了RememberMe就保留一个星期
                            userPasswordCookie.Expires = DateTime.Now.AddDays(7D);
                            userAccountCookie.Expires = DateTime.Now.AddDays(7D);
                        }
                        else
                        {
                            //否则只保存1天
                            userPasswordCookie.Expires = DateTime.Now.AddDays(1D);
                            userAccountCookie.Expires = DateTime.Now.AddDays(1D);
                        }
                        //添加Cookie,相当于授权
                        Response.Cookies.Add(userAccountCookie);
                        Response.Cookies.Add(userPasswordCookie);
                        //重定向
                        HtmlMeta RedirectMeta = new HtmlMeta(); //重定向用Meta标签
                        RedirectMeta.HttpEquiv = "refresh"; //指定行为为跳转
                        RedirectMeta.Content = "3;url=" + ReadWebConfig.GetAppSettingValue("Domain"); //时间为三秒,跳转到首页
                        this.Page.Header.Controls.Add(RedirectMeta);
                        //UI操作
                        LoginForm.Visible = false;
                    }
                }
                else
                {
                    //验证码校验失败
                    LoginInfo.Text = "验证码输入错误,请检查";
                    LoginForm.Visible = true;
                }

            }
        }
Exemplo n.º 16
0
        /// <summary>
        /// 更新用户信息,数据校验在BLL完成
        /// </summary>
        /// <param name="user">要更新的用户</param>
        /// <returns>成功true失败false</returns>
        public Boolean UpdateUserInfo(User user)
        {
            Boolean result = true;
            avfunEntities DataEntity = DataEntityManager.GetDataEntity();
            try{
                USER newInfoUSER = (from usr in DataEntity.USER
                                    where usr.user_id == user.User_id   //账号
                                    &&    usr.user_timestamp == user.User_timestamp //时间戳,注意,这个很重要!确保一致性!
                                    select usr
                                    ).Single();

                //            newInfoUSER = ConvertUserToUSER(user); 这是传指针,算了,老实点,一个个拷贝
               // newInfoUSER.u_id = user.U_id;  自动生成的不能改
                newInfoUSER.user_id = user.User_id;
                newInfoUSER.user_head = user.User_head;
                newInfoUSER.user_account = user.User_account;
                newInfoUSER.user_introduction = user.User_introduction;
                newInfoUSER.user_isChecked = user.User_isChecked;
                newInfoUSER.user_isDeleted = user.User_isDeleted;
                newInfoUSER.user_last_login_ip = user.User_last_login_ip;
                newInfoUSER.user_last_login_time = user.User_last_login_date;
                newInfoUSER.user_money = user.User_money;
                newInfoUSER.user_nickname = user.User_nickname;
                newInfoUSER.user_password = user.User_password;
                newInfoUSER.user_sex = user.User_sex;
             //   newInfoUSER.user_timestamp = user.User_timestamp; 妈蛋时间戳不能改啊改了还同步个J8啊!
                newInfoUSER.user_verify_code = user.User_verify_code;

                DataEntity.SaveChanges();
                result = true;
            }
            catch(Exception)
            {
                result = false;
            }
            return result;
        }
Exemplo n.º 17
0
 public int InsertUser(User user)
 {
     return CreateUser(user);
 }
Exemplo n.º 18
0
 /// <summary>
 /// 根据用户ID获取用户信息,ID写在参数的user_id中
 /// </summary>
 /// <param name="user">包含用户id的User类实例</param>
 /// <returns>成功返回包含用户完整信息的User对象,失败返回null</returns>
 public static User GetUserByID(User user)
 {
     User result = null;
     if (user.User_id == null)
     {
         result = null;
     }
     else
     {
         UserData userData = UserData.GetNewInstance();
         result = userData.GetUserByID(user);
     }
     return result;
 }
Exemplo n.º 19
0
 /// <summary>
 /// 根据账号和密码获得用户信息,返回一个符合查询条件的User,若不存在,返回null
 /// 其中参数的Account和Password必填
 /// </summary>
 /// <param name="user">要获得的User类,其中Account和Password必须填</param>
 /// <returns>User类或null</returns>
 public static User GetUserByAccountAndPassword(User user)
 {
     User ResultUser = null;
      /*
       * 数据完整性检查
       * */
      UserData UserData_Get = UserData.GetNewInstance();
      ResultUser = UserData_Get.GetUserByAccountAndPassword(user);
      return ResultUser;
 }
Exemplo n.º 20
0
        /// <summary>
        /// 取回密码函数,成功返回true,否则返回false
        /// </summary>
        /// <param name="user">重设密码的User类,Account必填</param>
        /// <returns>成功返回true,否则返回false</returns>
        public static Boolean GetForgetPassword(User user)
        {
            Boolean result = false;
             UserData userData = UserData.GetNewInstance();

             if (user.User_account == null || //不为null
                 user.User_account.Equals("") || //不为空
                 user.User_account.Length > 64)
             {//不长于64
                 // 数据验证完毕
                 result = false;
             }
             else
             {
                 //调用DAL重设密码
                String newUserPassword = GenerateRandomString(8);// 生成8位新密码,包括大小写特殊字符等等等等
                user.User_password = MD5(newUserPassword); //加密后传入数据库
                if (userData.GetForgetPassword(user)) //数据库那边搞定了!~
                {
                    result = true;
                    //给用户发邮件
                    SendNewPasswordMailToUser(user, newUserPassword);
                }
                else
                {
                    result = false;
                }
             }
             return result;
        }
Exemplo n.º 21
0
 /// <summary>
 /// DAL层,根据用户账号密码返回相应信息
 /// </summary>
 /// <param name="user">要查询的UI.User类,账号密码必填</param>
 /// <returns>若存在返回对应的User类,保存了全部信息,否则返回null</returns>
 public User GetUserByAccountAndPassword(User user)
 {
     User ResultUser = null;
     avfunEntities DataEntity = DataEntityManager.GetDataEntity();
     USER LoginUser = (from usr in DataEntity.USER
                      where usr.user_account == user.User_account
                      && usr.user_password == user.User_password
                       select usr)
                      .Single();
     ResultUser = ConvertUSERToUser(LoginUser);
     return ResultUser;
 }
Exemplo n.º 22
0
        /// <summary>
        /// 将DAL的USER类转换成BLL的User类
        /// </summary>
        /// <param name="user">要转换的USER类</param>
        /// <returns>转换后对应的user类</returns>
        private User ConvertUSERToUser(USER user)
        {
            User ResultUSER = new User();

            //这行代码不要的原因是因为U_id无意义啊!           ResultUSER.U_id = user.u_id;
            ResultUSER.User_id = user.user_id;
            ResultUSER.User_head = user.user_head;
            ResultUSER.User_account = user.user_account;
            ResultUSER.User_introduction = user.user_introduction;
            ResultUSER.User_isChecked = user.user_isChecked;
            ResultUSER.User_isDeleted = user.user_isDeleted;
            ResultUSER.User_last_login_ip = user.user_last_login_ip;
            ResultUSER.User_last_login_date = user.user_last_login_time;
            ResultUSER.User_money = user.user_money;
            ResultUSER.User_nickname = user.user_nickname;
            ResultUSER.User_password = user.user_password;
            ResultUSER.User_sex = user.user_sex;
            ResultUSER.User_timestamp = user.user_timestamp;
            ResultUSER.User_verify_code = user.user_verify_code;
            return ResultUSER;
        }
Exemplo n.º 23
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                //第一次打开该页面
                //View处理部分:
                RegResult.Visible = false; //注册结果不可见。
                RegUser.Visible = true;  //显示注册表单
            }
            else
            {
                    //用户填写好了表单,回传到了本页。
                    #region Control处理部分
                    //获取提交表单的信息,去掉所有前导和滞后空格
                    String userAccount = Request.Form["UserAccount"].Trim();
                    String userPassword = Request.Form["UserPassword"]; //密码不用去空格
                    if (userPassword.Length < 6 || userPassword.Length > 16)
                    {
                        RegResult.Text = "密码长度应该在6-16位之间,请重新输入";
                        RegResult.Visible = true;
                        return;
                    }
                    String strUserSex = Request.Form["UserSex"].Trim();
                    String userIntroduction = Request.Form["UserIntroduction"].Trim();
                    String userNickname = Request.Form["UserNickname"].Trim();
                    //用户验证码
                    String regVerifyCode = Request.Form["RegVerifyCode"].Trim().ToUpper();
                    //最后一次登录IP即为注册IP.
                    String userLastLoginIp = HttpContext.Current.Request.UserHostAddress;

                    //转换为布尔型,注意用户性别1为男0为女
                    Boolean userSex = strUserSex.ToUpper().Trim().Equals("MALE");

                    //密码MD5加密
                    userPassword = UserOpr.MD5(userPassword);
                    //测试用语句
                    /* RegResult.Text =
                        "注册信息为:" + "账号" + userAccount + "密码" + userPassword + "性别" + strUserSex +
                        "密码" + userPassword + "昵称" + userNickname + "最后登录ip" + userLastLoginIp + "个人说明" + userIntroduction;
                     */
                    if ( //验证码判定
                        Session[RegVerifyCodeGenerator.strIdentify] != null
                        && regVerifyCode.ToUpper().Equals
                        (Session[RegVerifyCodeGenerator.strIdentify].ToString().ToUpper() )
                        && !regVerifyCode.Equals("")
                        && regVerifyCode != null
                       )
                    {
                        //验证码正确,这里记得刷新验证码以防后退提交!
                        Session.Remove(RegVerifyCodeGenerator.strIdentify); //防止后退提交
                        #region 用户注册,与UserOpr打交道
                        //开始注册用户,数据完整性检查在BLL.UserOpr类中
                        String user_head = "img/01.jpg"; //男生默认头像
                        if (userSex == false) //是女生
                            user_head = "img/00.jpg"; //女生默认头像

                        User newUser = new User(userAccount, userPassword, userNickname, userSex, userLastLoginIp,user_head.Trim());
                        newUser.User_introduction = userIntroduction;

                        if (UserOpr.CreateUser(newUser) > 0)
                        {
                            RegResult.Text = "注册成功!请到您的邮箱" + userAccount + "中打开确认信完成激活,3秒钟之后自动跳转回主页";
                            RegUser.Visible = false; //注册表单不可见
                            HtmlMeta RedirectMeta = new HtmlMeta(); //重定向用Meta标签
                            RedirectMeta.HttpEquiv = "refresh"; //指定行为为跳转
                            RedirectMeta.Content = "3;url=" + ReadWebConfig.GetAppSettingValue("Domain") ; //时间为三秒,跳转到首页
                            this.Page.Header.Controls.Add(RedirectMeta);
                        }
                        else
                        {
                            RegResult.Text = "注册失败!请检查输入项!";

                            RegUser.Visible = true; //注册表单可见
                        }
                        #endregion
                    }
                    else //验证码输入不正确
                    {
                        RegResult.Text = "验证码验证出错"; //提示状态
                        RegUser.Visible = true; //注册表单可见
                    }

                    #endregion
                    #region 通用View处理部分
                    RegResult.Visible = true; //提示状态
                    UserPassword.Text = ""; //清空密码框
                    #endregion
            }
        }
Exemplo n.º 24
0
 /// <summary>
 /// 判断用户登录是否合法,合法返回登录用户对应的User对象,非法返回null
 /// User对象的Account Password必填
 /// </summary>
 /// <param name="user">需要判断的User对象</param>
 /// <returns>User类的实例</returns>
 public static User isLegalLogin(User user)
 {
     /*
         数据合法性检查
      */
     if (!isLegalLoginInfo(user))
         return null;
     else
     {
         /*操作数据库*/
         try
         {
             UserData userData = UserData.GetNewInstance();
             User entireUser = userData.GetUserByAccountAndPassword(user);
             return entireUser;
         }
         catch (Exception)
         {
             return null;
         }
     }
 }
Exemplo n.º 25
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //判断是否已经登录,注意,由于这里不管是不是postBack,因此取到的对象,timeStamp一定是最新的那个!
            //换而言之,我们的策略就是LastComesWin——最新的一次提交总是屌的!
            User loggedUser = UserOpr.isLogged(Request);
            //未登录
            if (loggedUser == null)
            {
                //登录界面不显示
                loggedDiv.Visible = false;
                //提示信息
                logStatus.Text = "主人大人,您未登录或已经登录过期哦!3秒后自动转向登录页面哦!请登录了再来调戏人家啦";
                logStatus.Visible = true; //提示信息开启

                //重定向
                HtmlMeta RedirectMeta = new HtmlMeta(); //重定向用Meta标签
                RedirectMeta.HttpEquiv = "refresh"; //指定行为为跳转
                RedirectMeta.Content = "3;url=" + ReadWebConfig.GetAppSettingValue("LoginPageURL"); //时间为三秒,跳转到首页
                this.Page.Header.Controls.Add(RedirectMeta);
            }
            else //已登录
            {
                //显示登录界面
                loggedDiv.Visible = true;
                //提示信息隐藏
                logStatus.Visible = false;

                if (!Page.IsPostBack)
                {
                    //用户未提交修改信息

                    //设置页面中对应的用户信息
                    //账户
                    txtUserAccount.Text = loggedUser.User_account;
                    //余额
                    lblMoney.Text = lblMoney.Text + loggedUser.User_money.ToString();
                    //头像,记得去空格
                    imgHead.ImageUrl = loggedUser.User_head.Trim();
                    //简介,记得去空格
                    txtUserIntroduction.Text = loggedUser.User_introduction.Trim();
                    //昵称。记得去空格
                    txtUserNickname.Text = loggedUser.User_nickname.Trim();
                    if (loggedUser.User_sex) //男生
                    {
                        UserSex.Items[0].Selected = true;
                        UserSex.Items[1].Selected = false;
                    }
                    else
                    {
                        UserSex.Items[0].Selected = false;
                        UserSex.Items[1].Selected = true; //女生
                    }
                }
                else
                {
                    //用户提交修改信息,验证的时候注意,从loggedUser里取账号和旧密码,旧密码和输入比对,账号直接带入操作
                    String oldPassword = Request.Form["txtUserOldPassword"];
                    String newPassword = Request.Form["txtUserNewPassword"];
                    String verifyNewPassword = Request.Form["txtUserVerifyNewPassword"];
                    String userIntroduction = Request.Form["txtUserIntroduction"].Trim();
                    String userNickname = Request.Form["txtUserNickName"].Trim(); //记得去空格
                    //头像!这里用完记得立刻释放掉Cookie
                    String userHead = Request.Cookies["userHead"].Value;

                    //转换为布尔型,注意用户性别1为男0为女
                    String strUserSex = Request.Form["UserSex"].Trim();
                    Boolean userSex = strUserSex.ToUpper().Trim().Equals("MALE");

                    User newInfoUser = new User(loggedUser);
                    #region 验证是否需要修改密码
                    if (!oldPassword.Equals("")
                        && oldPassword != null)
                    //填写了旧密码,意味着要修改密码
                    {
                        if (!newPassword.Equals(verifyNewPassword)) //新密码与确认密码不匹配
                        {
                            lblChangePasswordStatus.Text = "新密码与确认密码不匹配,请检查后再输入";
                            lblChangePasswordStatus.Visible = true;
                            return; //停止提交
                        }
                        else
                        {
                            if (!UserOpr.MD5(oldPassword).Equals(loggedUser.User_password))
                            {
                                //旧密码与账号密码不匹配
                                lblChangePasswordStatus.Text = "旧密码输入错误,请重新输入";
                                lblChangePasswordStatus.Visible = true;
                                return; //停止提交
                            }
                            else
                            {
                                //旧密码与账号密码匹配,且新密码与确认密码匹配的情况下
                                if (newPassword.Length > 16
                                    || newPassword.Length < 6)
                                {
                                    //新密码长度不对
                                    lblChangePasswordStatus.Text = "新密码长度不正确,请重新提交";
                                    lblChangePasswordStatus.Visible = true;
                                    return; //停止提交
                                }
                                else
                                {
                                    //修改后一并提交
                                    newInfoUser.User_password = UserOpr.MD5(newPassword);
                                    /*
                                    //修改用户密码
                                    if (UserOpr.ChagneUserPassword(newInfoUser, UserOpr.MD5(newPassword)))
                                    {
                                        //更改成功
                                        lblChangePasswordStatus.Text = "修改密码成功,请重新登录";
                                        lblChangePasswordStatus.Visible = true;
                                        return;//停止提交
                                    }
                                    else
                                    {
                                        //更改失败
                                        lblChangePasswordStatus.Text = "修改密码失败,请检查输入是否正确";
                                        lblChangePasswordStatus.Visible = true;
                                        return; //停止提交
                                    }
                                     * */
                                }

                            }
                        }
                    }
                    #endregion

                    #region 修改用户信息,这里不用加验证,userOpr里有

                    newInfoUser.User_introduction = userIntroduction;
                    newInfoUser.User_nickname = userNickname;
                    if (userHead != null)
                    {
                        newInfoUser.User_head = userHead; //这里注意看一下是相对路径还是绝对路径
                        //释放Cookie
                        HttpCookie userHeadCookie = new HttpCookie("userHead");
                        userHeadCookie.Expires = DateTime.Now.AddDays(-1D);
                        Response.Cookies.Add(userHeadCookie);
                    }

                    newInfoUser.User_sex = userSex;
                    #endregion

                    //开始调用BLL
                    if (UserOpr.UpdateUserInfo(newInfoUser))
                    {
                        //修改成功
                        logStatus.Text = "资料修改成功了哦,3秒后回到用户主页哦";
                        logStatus.Visible = true;
                        loggedDiv.Visible = false;
                        //重定向
                        HtmlMeta RedirectMeta = new HtmlMeta(); //重定向用Meta标签
                        RedirectMeta.HttpEquiv = "refresh"; //指定行为为跳转
                        RedirectMeta.Content = "3;url=user_index.aspx"; //时间为三秒,跳转到首页
                        this.Page.Header.Controls.Add(RedirectMeta);

                    }
                    else
                    {
                        //修改失败,给出提示信息
                        logStatus.Text = "修改资料失败了呢,真是抱歉,是不是主人大人什么地方填错了呢?";
                        logStatus.Visible = true;
                    }

                }
            }
        }
Exemplo n.º 26
0
 /// <summary>
 /// 注册时用户类的数据完整性检查,其实更改的时候也用得到啦!
 /// </summary>
 /// <param name="user">要检查的用户类</param>
 /// <returns>Boolean,true为合法,false为非法</returns>
 public static Boolean isLegalNewUser(User user)
 {
     Boolean result = true;
     // 用户账号不能为空,不能不写,长度不能小于5,不能大于64
     // @z.cn就5个了,怎么也不能比这个小吧?
     if (user.User_account == null ||
         user.User_account.Equals("") ||
         user.User_account.Length < 5 ||
         user.User_account.Length > 64 )
     {
         result = false;
     }
     String user_password = user.User_password;
     // 用户密码不能为空,不能不写,长度不能不等于32,传进来的时候就应该是加密过的
     if (user_password == null || user_password.Equals("") || user.User_password.Length != 32)
     {
         result = false;
     }
     // 最后登录ip不能为空,也不能不写,长度不能大于64,不能小于8
     // 0.0.0.0. —— 8
     if (user.User_last_login_ip == null || user.User_last_login_ip.Equals("") ||
         user.User_last_login_ip.Length > 64 || user.User_last_login_ip.Length < 8 )
     {
         result = false;
     }
     // 头像不能为空, 不能不写,长度不能大于256
     if (user.User_head == null || user.User_head.Equals("")
         || user.User_head.Length > 256)
     {
         result = false;
     }
     // 昵称不能为空,不能不写,长度不能小于1,不能大于32
     if (user.User_nickname == null || user.User_nickname.Equals("") || user.User_nickname.Length < 1 ||
         user.User_nickname.Length > 32)
     {
         result = false;
     }
     //余额不能小于0
     if (user.User_money < 0.0f)
     {
         result = false;
     }
     //如有自我介绍,则自我介绍长度不能大于256
     if (user.User_introduction != null && user.User_introduction.Length > 256)
     {
         result = false;
     }
     return result;
 }
Exemplo n.º 27
0
 /// <summary>
 /// 根据参数中User类实例的user_id获取包含完整信息的User对象
 /// </summary>
 /// <param name="user">包含user_id的User类实例</param>
 /// <returns>成功返回包含完整信息的User类实例,失败返回null</returns>
 public User GetUserByID(User user)
 {
     avfunEntities DataEntity = DataEntityManager.GetDataEntity();
     User result = null;
     try
     {
         USER ResultUSER = ( from usr in DataEntity.USER
                    where usr.user_id == user.User_id
                    select usr
                    ).Single();
         result = ConvertUSERToUser(ResultUSER);
     }
     catch
     {
         result = null;
     }
     return result;
 }
Exemplo n.º 28
0
 /// <summary>
 /// 判断用户是否已经登录,如果登录那么返回包含用户信息的User对象,否则返回Null,相当于认证
 /// </summary>
 /// <param name="httpRequest">当前的httpRequest</param>
 /// <returns>已登录返回User对象,否则返回Null</returns>
 public static User isLogged(HttpRequest httpRequest)
 {
     /* 输入验证不可少 */
     /* 账号密码输入验证 */
     if (httpRequest.Cookies["userAccount"] == null
         || httpRequest.Cookies["userPassword"] == null
         || httpRequest.Cookies["userAccount"].Value.Length > 64
         || httpRequest.Cookies["userPassword"].Value.Length != 32
         )
         return null;
     else
     {
         User logUser = new User();
         logUser.User_account = httpRequest.Cookies["userAccount"].Value;
         logUser.User_password = httpRequest.Cookies["userPassword"].Value;
         //这个调用必须指定ip
         logUser.User_last_login_ip = HttpContext.Current.Request.UserHostAddress;
         logUser.User_last_login_date = DateTime.Now;
         User detailUser = isLegalLogin(logUser);
         return detailUser;
     }
 }