Exemplo n.º 1
0
        /// <summary>
        /// 发送验证注册请求链接
        /// </summary>
        public void SendRegisterVerifyLink()
        {
            string email = DNTRequest.GetString(config.Antispamregisteremail).Trim().ToLower();

            ValidateEmail(email);
            if (IsErr())
            {
                return;
            }

            InviteCodeInfo inviteCode = allowinvite ? ValidateInviteInfo() : null;

            if (IsErr())
            {
                return;
            }

            VerifyRegisterInfo verifyInfo = Users.CreateVerifyRegisterInfo(email, allowinvite ? invitecode : string.Empty);

            if (verifyInfo != null)
            {
                string verifyLink    = string.Format("{0}register.aspx?action=reg&verifycode={1}", Utils.GetRootUrl(forumpath), verifyInfo.VerifyCode);
                string verifyContent = string.Format(config.Verifyregisteremailtemp,
                                                     verifyInfo.Email.Split('@')[0],
                                                     verifyLink);

                EmailMultiThread emt = new EmailMultiThread(verifyInfo.Email.Split('@')[0],
                                                            verifyInfo.Email,
                                                            string.Format("{0} 的安全注册链接,欢迎注册!", config.Forumtitle),
                                                            verifyContent);
                new System.Threading.Thread(new System.Threading.ThreadStart(emt.Send)).Start();
            }
            SetUrl("index.aspx");
            SetShowBackLink(false);
            SetMetaRefresh(2);
            AddMsgLine("请求已经发送,请查收邮箱");
        }
Exemplo n.º 2
0
        protected override void ShowPage()
        {
            pagetitle = "用户注册";

            if (userid > 0)
            {
                SetUrl(BaseConfigs.GetForumPath);
                SetMetaRefresh();
                SetShowBackLink(false);
                AddMsgLine("不能重复注册用户");
                ispost = true;
                return;
            }

            if (config.Regstatus < 1)
            {
                AddErrLine("论坛当前禁止新用户注册");
                return;
            }

            #region action set

            if (string.IsNullOrEmpty(action))
            {
                action = config.Rules == 1 && infloat == 0 ? "rules" :
                         (config.Regverify == 1 ? "verify" : "reg");
            }
            else if (Utils.InArray(action, "rules,verify,reg"))
            {
                if (action == "rules" && (config.Rules == 0 || infloat == 1))
                {
                    action = config.Regverify == 1 ? "verify" : "reg";
                }
            }
            else
            {
                AddErrLine("参数错误");
                return;
            }
            #endregion

            #region IP check

            string msg = Users.CheckRegisterDateDiff(DNTRequest.GetIP());
            if (msg != null)
            {
                AddErrLine(msg);
                return;
            }

            if (action == "verify" && config.Regverify == 1 && config.Regctrl > 0)
            {
                VerifyRegisterInfo tmpVerifyInfo = Users.GetVerifyRegisterInfoByIp(DNTRequest.GetIP());
                if (tmpVerifyInfo != null)
                {
                    int interval = Utils.StrDateDiffHours(tmpVerifyInfo.CreateTime, config.Regctrl);
                    if (interval == 0)
                    {
                        AddErrLine("抱歉, 系统设置了IP注册间隔限制, 您必须在 " +
                                   (Utils.StrDateDiffMinutes(tmpVerifyInfo.CreateTime, config.Regctrl * 60) * -1) + " 分钟后才可以提交请求");
                        return;
                    }
                    else if (interval < 0)
                    {
                        AddErrLine("抱歉, 系统设置了IP注册间隔限制, 您必须在 " + (interval * -1) + " 小时后才可以提交请求");
                        return;
                    }
                }
            }

            #endregion

            //如果开启了Email验证注册且action是注册(通过注册链接进入)
            if (action == "reg" && config.Regverify == 1)
            {
                verifyinfo = Users.GetVerifyRegisterInfo(verifycode);
                if (verifyinfo == null ||
                    (verifyinfo.CreateTime != verifyinfo.ExpireTime && TypeConverter.StrToDateTime(verifyinfo.ExpireTime) < DateTime.Now))
                {
                    AddErrLine("该注册链接不存在或已过期,请点击注册重新获取链接");
                    return;
                }
                invitecode = verifyinfo.InviteCode;
            }

            allowinvite = Utils.InArray(config.Regstatus.ToString(), "2,3");//注册状态是否是开启了邀请功能config.Regstatus=2或者=3

            //如果是POST提交
            if (ispost)
            {
                switch (action)
                {
                case "rules":    //通过注册协议
                    action = string.IsNullOrEmpty(agree) ? action : (config.Regverify == 1 ? "verify" : "reg");
                    ispost = false;
                    break;

                case "verify":    //发送验证注册请求邮件
                    SendRegisterVerifyLink();
                    break;

                case "reg":    //注册用户
                    if (createuser == 1)
                    {
                        Register();
                    }
                    break;
                }
            }
        }