Exemplo n.º 1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!DiscuzCloud.GetCloudServiceEnableStatus("connect"))
            {
                ResponseScript("<script>alert('站点 " + (config.Cloudenabled == 1 ? "QQ 登录服务" : "云平台") +
                               "未开启');window.location.href='" + (config.Cloudenabled == 1 ? " global_cloudindex.aspx" : "global_cloudset.aspx") + "';</script>");
            }

            if (DNTRequest.GetInt("save", 0) > 0)
            {
                config.Allowconnectregister = DNTRequest.GetInt("enablereg", 0);
                config.Allowuseqzavater     = DNTRequest.GetInt("enablecatchqzavatar", 0);
                int bindCount = DNTRequest.GetInt("maxbindcount", -1);

                if (bindCount < 0)
                {
                    ResponseScript("<script>alert('允许QQ号注册数量填写错误');window.location.href='global_connectset.aspx';</script>");
                    return;
                }
                config.Maxuserbindcount = bindCount;
                DiscuzCloudConfigs.SaveConfig(config);
                DiscuzCloudConfigs.ResetConfig();
                ResponseScript("<script>alert('操作成功');window.location.href='global_connectset.aspx';</script>");
            }

            uploadLogoUrl = DiscuzCloud.GetCloudUploadLogoIFrame(userid);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 获取主题信息
        /// </summary>
        /// <returns></returns>
        public TopicInfo GetTopicInfo()
        {
            string go = DNTRequest.GetString("go").Trim().ToLower();

            if (go == "")
            {
                forumid = 0;
            }
            else if (forumid == 0)
            {
                go = "";
            }

            TopicInfo topicInfo;

            // 获取该主题的信息
            switch (go)
            {
            case "prev": topicInfo = Topics.GetTopicInfo(topicid, forumid, 1); break;

            case "next": topicInfo = Topics.GetTopicInfo(topicid, forumid, 2); break;

            default: topicInfo = Topics.GetTopicInfo(topicid); break;
            }

            if (topicInfo == null)
            {
                if (go == "prev")
                {
                    msg = "没有更旧的主题, 请返回";
                }
                else if (go == "next")
                {
                    msg = "没有更新的主题, 请返回";
                }
                else
                {
                    msg = "该主题不存在";
                }

                //如果站点开启了QQ Connect
                if (DiscuzCloud.GetCloudServiceEnableStatus("connect"))
                {
                    DeleteFeed df = new DeleteFeed();
                    df.DeleteTopicPushedFeed(topicid);
                }

                AddErrLine(msg);
                GetForumAds(0);
            }
            return(topicInfo);
        }
Exemplo n.º 3
0
        protected override void ShowPage()
        {
            if (!DiscuzCloud.GetCloudServiceEnableStatus("connect"))
            {
                AddErrLine("QQ登录功能已关闭");
                return;
            }

            switch (action)
            {
            case "access":
                if (!CheckCallbackSignature(DNTRequest.GetString("con_sig")))
                {
                    AddErrLine("非法请求");
                    return;
                }

                OAuthAccessTokenInfo tokenInfo = DiscuzCloud.GetConnectAccessTokenInfo();
                if (tokenInfo == null)
                {
                    AddErrLine("QQ登录过程中出现异常,请尝试再次登录");
                    return;
                }

                userconnectinfo = DiscuzCloud.GetUserConnectInfo(tokenInfo.Openid);
                if (userconnectinfo == null)
                {
                    userconnectinfo        = new UserConnectInfo();
                    userconnectinfo.OpenId = tokenInfo.Openid;
                    userconnectinfo.Token  = tokenInfo.Token;
                    userconnectinfo.Secret = tokenInfo.Secret;
                    userconnectinfo.AllowVisitQQUserInfo = DNTRequest.GetInt("con_is_user_info", 0);
                    userconnectinfo.AllowPushFeed        = DNTRequest.GetInt("con_is_feed", 0) == 1 ? 3 : 0;
                    userconnectinfo.CallbackInfo         = usedusernames + "&" + birthday + "&" + gender + "&" + email;
                    DiscuzCloud.CreateUserConnectInfo(userconnectinfo);
                }
                else if (userconnectinfo.Uid > 0)
                {
                    if (userid > 0)
                    {
                        SetBackLink("index.aspx");
                        AddErrLine(userconnectinfo.Uid != userid ? "该QQ已经绑定了其他帐号" : "该QQ用户已登录");
                        return;
                    }

                    ShortUserInfo userInfo    = Users.GetShortUserInfo(userconnectinfo.Uid);
                    string        redirectUrl = "";
                    //如果userInfo==null,可能是管理员后台删除了这个帐号,则用户的ConnnectInfo也需要被解绑重置
                    if (userInfo == null)
                    {
                        DiscuzCloud.UnbindUserConnectInfo(userconnectinfo.OpenId);
                        redirectUrl = HttpContext.Current.Request.RawUrl;
                    }
                    else
                    {
                        redirectUrl = forumpath + "index.aspx";
                        //如果云端的token和Secret发生改变,则更新本地保存的token和Secret
                        if (tokenInfo.Token != userconnectinfo.Token || tokenInfo.Secret != userconnectinfo.Secret)
                        {
                            userconnectinfo.Token  = tokenInfo.Token;
                            userconnectinfo.Secret = tokenInfo.Secret;
                            DiscuzCloud.UpdateUserConnectInfo(userconnectinfo);
                        }
                        LoginUser(userInfo);
                    }
                    HttpContext.Current.Response.Redirect(redirectUrl);
                    HttpContext.Current.ApplicationInstance.CompleteRequest();
                }
                else
                {
                    string[] callbackInfo = userconnectinfo.CallbackInfo.Split('&');
                    if (callbackInfo.Length == 4)
                    {
                        usedusernames = string.IsNullOrEmpty(usedusernames) ? callbackInfo[0] : usedusernames;
                        birthday      = string.IsNullOrEmpty(birthday) ? callbackInfo[1] : birthday;
                        gender        = gender == 0 ? Utils.StrToInt(callbackInfo[2], 0) : gender;
                        email         = string.IsNullOrEmpty(email) ? callbackInfo[3] : email;
                    }
                }
                UserBindConnectLog userBindLog = DiscuzCloud.GetUserConnectBindLog(userconnectinfo.OpenId);
                isbindoverflow = userBindLog != null && cloudconfig.Maxuserbindcount > 0 && userBindLog.BindCount >= cloudconfig.Maxuserbindcount;

                allowreg      = config.Regstatus != 0 && cloudconfig.Allowconnectregister == 1 && !isbindoverflow;
                connectswitch = allowreg && userid < 0 ? 1 : 2;

                #region convert used username list
                byte[] bt = Convert.FromBase64String(usedusernames);
                usedusernames = System.Text.Encoding.Default.GetString(bt);

                #endregion
                avatarurl = string.Format("http://avatar.connect.discuz.qq.com/{0}/{1}", DiscuzCloudConfigs.GetConfig().Connectappid, userconnectinfo.OpenId);
                openid    = userconnectinfo.OpenId;
                break;

            case "bind":
                if (ispost)
                {
                    if (DNTRequest.GetString("bind_type") == "new")
                    {
                        RegisterAndBind();
                    }
                    else
                    {
                        if (userid < 0)
                        {
                            BindForumExistedUser();
                        }
                        else
                        {
                            BindLoginedUser();
                        }
                    }
                }
                break;

            case "unbind":
                if (userid < 1)
                {
                    AddErrLine("未登录用户无法进行该操作");
                    return;
                }
                userconnectinfo = DiscuzCloud.GetUserConnectInfo(userid);
                if (userconnectinfo == null)
                {
                    AddErrLine("您并没有绑定过QQ,不需要执行该操作");
                    return;
                }
                if (ispost)
                {
                    if (userconnectinfo.IsSetPassword == 0)
                    {
                        string passwd = DNTRequest.GetString("newpasswd");
                        if (string.IsNullOrEmpty(passwd))
                        {
                            AddErrLine("您必须为帐号设置新密码才能解除绑定");
                            return;
                        }
                        if (passwd.Length < 6)
                        {
                            AddErrLine("密码不得少于6个字符");
                            return;
                        }

                        if (passwd != DNTRequest.GetString("confirmpasswd"))
                        {
                            AddErrLine("两次输入的新密码不一致");
                            return;
                        }
                        UserInfo userInfo = Users.GetUserInfo(userid);
                        userInfo.Password = passwd;
                        Users.ResetPassword(userInfo);
                        //同步其他应用密码
                        Sync.UpdatePassword(userInfo.Username, userInfo.Password, "");

                        if (!Utils.StrIsNullOrEmpty(DNTRequest.GetString("changesecques")))
                        {
                            Users.UpdateUserSecques(userid, DNTRequest.GetInt("question", 0), DNTRequest.GetString("answer"));
                        }

                        ForumUtils.WriteCookie("password", ForumUtils.SetCookiePassword(userInfo.Password, config.Passwordkey));
                        OnlineUsers.UpdatePassword(olid, userInfo.Password);
                    }

                    DiscuzCloud.UnbindUserConnectInfo(userconnectinfo.OpenId);
                    UserBindConnectLog bindLog = DiscuzCloud.GetUserConnectBindLog(userconnectinfo.OpenId);
                    if (bindLog != null)
                    {
                        bindLog.Type = 2;
                        DiscuzCloud.UpdateUserConnectBindLog(bindLog);
                    }

                    AddMsgLine("解绑成功");
                    string reurl = Utils.UrlDecode(ForumUtils.GetReUrl());
                    SetUrl(reurl.IndexOf("register.aspx") < 0 ? reurl : forumpath + "index.aspx");
                    SetMetaRefresh();
                }
                break;

            default:
                if (isbindconnect)
                {
                    AddErrLine("用户已登录");
                    return;
                }
                HttpContext.Current.Response.Redirect(DiscuzCloud.GetConnectLoginPageUrl(userid));
                HttpContext.Current.ApplicationInstance.CompleteRequest();
                break;
            }
        }
Exemplo n.º 4
0
        protected override void OnInit(EventArgs e)
        {
            if (!DiscuzCloud.GetCloudServiceEnableStatus("connect"))
            {
                base.AddErrLine("QQ登录功能已关闭");
                return;
            }
            string a;

            if ((a = this.action) != null)
            {
                if (!(a == "access"))
                {
                    if (!(a == "bind"))
                    {
                        if (a == "unbind")
                        {
                            if (this.userid < 1)
                            {
                                base.AddErrLine("未登录用户无法进行该操作");
                                return;
                            }
                            this.userconnectinfo = DiscuzCloud.GetUserConnectInfo(this.userid);
                            if (this.userconnectinfo == null)
                            {
                                base.AddErrLine("您并没有绑定过QQ,不需要执行该操作");
                                return;
                            }
                            if (this.ispost)
                            {
                                if (!this.userconnectinfo.IsSetPassword)
                                {
                                    string @string = DNTRequest.GetString("newpasswd");
                                    if (string.IsNullOrEmpty(@string))
                                    {
                                        base.AddErrLine("您必须为帐号设置新密码才能解除绑定");
                                        return;
                                    }
                                    if (@string.Length < 6)
                                    {
                                        base.AddErrLine("密码不得少于6个字符");
                                        return;
                                    }
                                    if (@string != DNTRequest.GetString("confirmpasswd"))
                                    {
                                        base.AddErrLine("两次输入的新密码不一致");
                                        return;
                                    }
                                    var userInfo = Users.GetUserInfo(this.userid);
                                    userInfo.Password = @string;
                                    Users.ResetPassword(userInfo);
                                    Sync.UpdatePassword(userInfo.Name, userInfo.Password, "");
                                    if (!Utils.StrIsNullOrEmpty(DNTRequest.GetString("changesecques")))
                                    {
                                        Users.UpdateUserSecques(this.userid, DNTRequest.GetInt("question", 0), DNTRequest.GetString("answer"));
                                    }
                                    ForumUtils.WriteCookie("password", ForumUtils.SetCookiePassword(userInfo.Password, this.config.Passwordkey));
                                    OnlineUsers.UpdatePassword(this.olid, userInfo.Password);
                                }
                                DiscuzCloud.UnbindUserConnectInfo(this.userconnectinfo.OpenId);
                                ConnectbindLog userConnectBindLog = DiscuzCloud.GetUserConnectBindLog(this.userconnectinfo.OpenId);
                                if (userConnectBindLog != null)
                                {
                                    userConnectBindLog.Type = 2;
                                    DiscuzCloud.UpdateUserConnectBindLog(userConnectBindLog);
                                }
                                base.AddMsgLine("解绑成功");
                                string text = Utils.UrlDecode(ForumUtils.GetReUrl());
                                base.SetUrl((text.IndexOf("register.aspx") < 0) ? text : (this.forumpath + "index.aspx"));
                                base.SetMetaRefresh();
                                return;
                            }
                            return;
                        }
                    }
                    else
                    {
                        if (!this.ispost)
                        {
                            return;
                        }
                        if (DNTRequest.GetString("bind_type") == "new")
                        {
                            this.RegisterAndBind();
                            return;
                        }
                        if (this.userid < 0)
                        {
                            this.BindForumExistedUser();
                            return;
                        }
                        this.BindLoginedUser();
                        return;
                    }
                }
                else
                {
                    if (!this.CheckCallbackSignature(DNTRequest.GetString("con_sig")))
                    {
                        base.AddErrLine("非法请求");
                        return;
                    }
                    OAuthAccessTokenInfo connectAccessTokenInfo = DiscuzCloud.GetConnectAccessTokenInfo();
                    if (connectAccessTokenInfo == null)
                    {
                        base.AddErrLine("QQ登录过程中出现异常,请尝试再次登录");
                        return;
                    }
                    userconnectinfo = DiscuzCloud.GetUserConnectInfo(connectAccessTokenInfo.Openid);
                    if (userconnectinfo == null)
                    {
                        userconnectinfo        = new UserConnect();
                        userconnectinfo.OpenId = connectAccessTokenInfo.Openid;
                        userconnectinfo.Token  = connectAccessTokenInfo.Token;
                        userconnectinfo.Secret = connectAccessTokenInfo.Secret;
                        userconnectinfo.AllowVisitQQUserInfo = DNTRequest.GetInt("con_is_user_info", 0) != 0;
                        userconnectinfo.AllowPushFeed        = DNTRequest.GetInt("con_is_feed", 0) != 0;
                        userconnectinfo.CallbackInfo         = usedusernames + "&" + birthday + "&" + gender + "&" + email;
                        //DiscuzCloud.CreateUserConnectInfo(this.userconnectinfo);
                        userconnectinfo.Insert();
                    }
                    else
                    {
                        if (this.userconnectinfo.Uid > 0)
                        {
                            if (this.userid > 0)
                            {
                                base.SetBackLink("index.aspx");
                                base.AddErrLine((this.userconnectinfo.Uid != this.userid) ? "该QQ已经绑定了其他帐号" : "该QQ用户已登录");
                                return;
                            }
                            IUser  shortUserInfo = Discuz.Entity.User.FindByID(this.userconnectinfo.Uid);
                            string url;
                            if (shortUserInfo == null)
                            {
                                DiscuzCloud.UnbindUserConnectInfo(this.userconnectinfo.OpenId);
                                url = HttpContext.Current.Request.RawUrl;
                            }
                            else
                            {
                                url = HttpContext.Current.Request.QueryString["url"];
                                if (string.IsNullOrEmpty(url))
                                {
                                    url = this.forumpath + "index.aspx";
                                }
                                if (connectAccessTokenInfo.Token != this.userconnectinfo.Token || connectAccessTokenInfo.Secret != this.userconnectinfo.Secret)
                                {
                                    this.userconnectinfo.Token  = connectAccessTokenInfo.Token;
                                    this.userconnectinfo.Secret = connectAccessTokenInfo.Secret;
                                    DiscuzCloud.UpdateUserConnectInfo(this.userconnectinfo);
                                }
                                this.LoginUser(shortUserInfo);
                            }
                            HttpContext.Current.Response.Redirect(url);
                            HttpContext.Current.ApplicationInstance.CompleteRequest();
                        }
                        else
                        {
                            string[] array = this.userconnectinfo.CallbackInfo.Split('&');
                            if (array.Length == 4)
                            {
                                this.usedusernames = (string.IsNullOrEmpty(this.usedusernames) ? array[0] : this.usedusernames);
                                this.birthday      = (string.IsNullOrEmpty(this.birthday) ? array[1] : this.birthday);
                                this.gender        = ((this.gender == 0) ? Utils.StrToInt(array[2], 0) : this.gender);
                                this.email         = (string.IsNullOrEmpty(this.email) ? array[3] : this.email);
                            }
                        }
                    }
                    ConnectbindLog userConnectBindLog2 = DiscuzCloud.GetUserConnectBindLog(this.userconnectinfo.OpenId);
                    this.isbindoverflow = (userConnectBindLog2 != null && this.cloudconfig.Maxuserbindcount > 0 && userConnectBindLog2.BindCount >= this.cloudconfig.Maxuserbindcount);
                    this.allowreg       = (this.config.Regstatus != 0 && this.cloudconfig.Allowconnectregister == 1 && !this.isbindoverflow);
                    this.connectswitch  = ((this.allowreg && this.userid < 0) ? 1 : 2);
                    byte[] bytes = Convert.FromBase64String(this.usedusernames);
                    this.usedusernames = Encoding.Default.GetString(bytes);
                    this.avatarurl     = string.Format("http://avatar.connect.discuz.qq.com/{0}/{1}", DiscuzCloudConfigInfo.Current.Connectappid, this.userconnectinfo.OpenId);
                    this.openid        = this.userconnectinfo.OpenId;
                    return;
                }
            }
            if (this.isbindconnect)
            {
                base.AddErrLine("用户已登录");
                return;
            }
            HttpContext.Current.Response.Redirect(DiscuzCloud.GetConnectLoginPageUrl(this.userid));
            HttpContext.Current.ApplicationInstance.CompleteRequest();
        }
Exemplo n.º 5
0
        /// <summary>
        /// BasePage类构造函数
        /// </summary>
        public BaseController()
        {
            m_starttick = DateTime.Now;
            if (recordPageView)
            {
                PageViewStatistic(pagename);
            }

            config = GeneralConfigs.GetConfig();
            if (SpacePluginProvider.GetInstance() == null)
            {
                config.Enablespace = 0;
            }
            if (AlbumPluginProvider.GetInstance() == null)
            {
                config.Enablealbum = 0;
            }
            if (MallPluginProvider.GetInstance() == null)
            {
                config.Enablemall = 0;
            }

            LoadUrlConfig();
            userid = Utils.StrToInt(ForumUtils.GetCookie("userid"), -1);

            //清空当前页面查询统计
#if DEBUG
            Discuz.Data.DbHelper.QueryCount  = 0;
            Discuz.Data.DbHelper.QueryDetail = "";
#endif
            // 如果启用游客页面缓存,则对游客输出缓存页
            if (userid == -1 && config.Guestcachepagetimeout > 0 && GetUserCachePage(pagename))
            {
                return;
            }

            AddMetaInfo(config.Seokeywords, config.Seodescription, config.Seohead);

            if (config.Nocacheheaders == 1)
            {
                System.Web.HttpContext.Current.Response.BufferOutput    = false;
                System.Web.HttpContext.Current.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
                System.Web.HttpContext.Current.Response.Cache.SetExpires(DateTime.Now.AddDays(-1));
                System.Web.HttpContext.Current.Response.Expires      = 0;
                System.Web.HttpContext.Current.Response.CacheControl = "no-cache";
                System.Web.HttpContext.Current.Response.Cache.SetNoStore();
            }

            //当为forumlist.aspx或forumindex.aspx,可能出现在线并发问题,这时系统会延时2秒
            if ((pagename != "forumlist.aspx") && (pagename != "forumindex.aspx"))
            {
                oluserinfo = OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout);
            }
            else
            {
                try
                {
                    oluserinfo = OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout);
                }
                catch
                {
                    System.Threading.Thread.Sleep(2000);
                    oluserinfo = OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout);
                }
            }

            if (config.PostTimeStorageMedia == 1 && Utils.GetCookie("lastposttime") != "")//如果最后发帖时间cookie不为空,则在此修改用户的该属性
            {
                oluserinfo.Lastposttime = Utils.GetCookie("lastposttime");
            }

            userid         = oluserinfo.Userid;
            usergroupid    = oluserinfo.Groupid;
            username       = oluserinfo.Username;
            password       = oluserinfo.Password;
            userkey        = password.Length > 16 ? password.Substring(4, 8).Trim() : "";
            lastposttime   = oluserinfo.Lastposttime;
            lastpostpmtime = oluserinfo.Lastpostpmtime;
            lastsearchtime = oluserinfo.Lastsearchtime;
            olid           = oluserinfo.Olid;

            isopenconnect = DiscuzCloud.GetCloudServiceEnableStatus("connect");
            isbindconnect = isopenconnect ? DiscuzCloud.OnlineUserIsBindConnect(userid) : false;

            //确保头像可以取到
            if (userid > 0)
            {
                useravatar = Avatars.GetAvatarUrl(userid, AvatarSize.Small);
            }

            if (Utils.InArray(DNTRequest.GetString("selectedtemplateid"), Templates.GetValidTemplateIDList()))
            {
                templateid = DNTRequest.GetInt("selectedtemplateid", 0);
            }
            else if (Utils.InArray(Utils.GetCookie(Utils.GetTemplateCookieName()), Templates.GetValidTemplateIDList()))
            {
                templateid = Utils.StrToInt(Utils.GetCookie(Utils.GetTemplateCookieName()), config.Templateid);
            }

            if (templateid == 0)
            {
                templateid = config.Templateid;
            }

            pmsound = Utils.StrToInt(ForumUtils.GetCookie("pmsound"), 0);

            //已登录用户检测用户组状态,如果是禁言或禁止访问状态时间到期,则自动解禁
            if (usergroupid == 4 || usergroupid == 5)
            {
                //int groupExpiry = Users.GetShortUserInfo(userid).Groupexpiry;
                //if (groupExpiry != 0 && groupExpiry <= Utils.StrToInt(DateTime.Now.ToString("yyyyMMdd"), 0))
                //{
                //    //先改为第一个积分组
                //    usergroupid = 11;
                //    //usergroupinfo = UserGroups.GetUserGroupInfo(usergroupid);
                //    Users.UpdateUserGroup(userid, 11);
                //}

                ShortUserInfo userInfo = Users.GetShortUserInfo(userid);
                if (userInfo.Groupexpiry != 0 && userInfo.Groupexpiry <= Utils.StrToInt(DateTime.Now.ToString("yyyyMMdd"), 0))
                {
                    UserGroupInfo groupInfo = CreditsFacade.GetCreditsUserGroupId(userInfo.Credits);
                    usergroupid = groupInfo.Groupid != 0 ? groupInfo.Groupid : usergroupid;
                    Users.UpdateUserGroup(userid, usergroupid);
                }
            }

            usergroupinfo = UserGroups.GetUserGroupInfo(usergroupid);

            // 取得用户权限id,1管理员,2超版,3版主,0普通组,-1特殊组
            useradminid = usergroupinfo.Radminid;
            string tips = ForumUtils.GetUserCreditsCookie(userid, usergroupinfo.Grouptitle);
            if (tips != "")
            {
                string[] userinfotipsList = tips.Split(',');//因为考虑到应用程序做单点登录时获取不到userinfotips,封装了此方法
                userinfotips  = "<p><a class=\"drop\" onmouseover=\"showMenu(this.id);\" href=\"" + BaseConfigs.GetForumPath + "usercpcreditspay.aspx\" id=\"extcreditmenu\">" + userinfotipsList[0] + "</a> ";
                userinfotips += "<span class=\"pipe\">|</span>用户组: <a class=\"xi2\" id=\"g_upmine\" href=\"" + BaseConfigs.GetForumPath + "usercp.aspx\">" + userinfotipsList[1].Split(':')[1] + "</a></p>";
                userinfotips += "<ul id=\"extcreditmenu_menu\" class=\"p_pop\" style=\"display:none;\">";
                for (int i = 2; i < userinfotipsList.Length; i++)
                {
                    userinfotips += string.Format("<li><a> {0}</a></li>", userinfotipsList[i]);
                }
                userinfotips += "</ul>";
            }

            mainnavigation       = Navs.GetNavigationString(userid, useradminid);
            subnavigation        = Navs.GetSubNavigation();
            mainnavigationhassub = Navs.GetMainNavigationHasSub();
            // 如果论坛关闭且当前用户请求页面不是登录页面且用户非管理员, 则跳转至论坛关闭信息页
            if (config.Closed == 1 && pagename != "login.aspx" && pagename != "logout.aspx" && pagename != "register.aspx" && useradminid != 1)
            {
                ShowMessage(1);
                return;
            }

            if (!Utils.InArray(pagename, "attachment.aspx"))//加入附件页面判断减少性能消耗
            {
                onlineusercount = (userid != -1) ? OnlineUsers.GetOnlineAllUserCount() : OnlineUsers.GetCacheOnlineAllUserCount();
            }

            //校验用户是否可以访问论坛
            if (!ValidateUserPermission())
            {
                return;
            }

            //更新用户在线时长
            if (userid != -1 && !Utils.InArray(pagename, "attachment.aspx"))//加入附件页面判断减少性能消耗
            {
                OnlineUsers.UpdateOnlineTime(config.Oltimespan, userid);
            }
            Discuz.Entity.TemplateInfo templateInfo = Templates.GetTemplateItem(templateid);
            templatepath = templateInfo.Directory;
            if (templateInfo.Templateurl.ToLower().StartsWith("http://"))
            {
                imagedir = templateInfo.Templateurl.TrimEnd('/') + "/images";
                cssdir   = templateInfo.Templateurl.TrimEnd('/');
            }
            else
            {
                imagedir = forumpath + "templates/" + templateInfo.Directory + "/images";
                cssdir   = forumpath + "templates/" + templateInfo.Directory;
            }
            if (EntLibConfigs.GetConfig() != null && !Utils.StrIsNullOrEmpty(EntLibConfigs.GetConfig().Topicidentifydir))
            {
                topicidentifydir = EntLibConfigs.GetConfig().Topicidentifydir.TrimEnd('/');
            }
            else
            {
                topicidentifydir = forumpath + "images/identify";
            }

            if (EntLibConfigs.GetConfig() != null && !Utils.StrIsNullOrEmpty(EntLibConfigs.GetConfig().Posticondir))
            {
                posticondir = EntLibConfigs.GetConfig().Posticondir.TrimEnd('/');
            }
            else
            {
                posticondir = forumpath + "images/posticons";
            }



            if (EntLibConfigs.GetConfig() != null && !Utils.StrIsNullOrEmpty(EntLibConfigs.GetConfig().Jsdir))
            {
                jsdir = EntLibConfigs.GetConfig().Jsdir.TrimEnd('/');
            }
            else
            {
                jsdir = rooturl + "javascript";
            }

            nowdate     = Utils.GetDate();
            nowtime     = Utils.GetTime();
            nowdatetime = Utils.GetDateTime();
            ispost      = DNTRequest.IsPost();
            isget       = DNTRequest.IsGet();
            link        = "";
            script      = "";

            templatelistboxoptions = Caches.GetTemplateListBoxOptionsCache();

            string originalTemplate = string.Format("<li><a href=\"###\" onclick=\"window.location.href='{0}showtemplate.aspx?templateid={1}'\">",
                                                    "", BaseConfigs.GetForumPath, templateid);
            string newTemplate = string.Format("<li class=\"current\"><a href=\"###\" onclick=\"window.location.href='{0}showtemplate.aspx?templateid={1}'\">",
                                               BaseConfigs.GetForumPath, templateid);
            templatelistboxoptions = templatelistboxoptions.Replace(originalTemplate, newTemplate);

            isLoginCode = config.Seccodestatus.Contains("login.aspx");
            //当该页面设置了验证码检验,并且当前用户的用户组没有给予忽略验证码的权限,则isseccode=true;
            isseccode = Utils.InArray(pagename, config.Seccodestatus) && usergroupinfo.Ignoreseccode == 0;


            headerad = Advertisements.GetOneHeaderAd("", 0);
            footerad = Advertisements.GetOneFooterAd("", 0);

            //设定当前页面的显示样式
            if (config.Allowchangewidth == 0)
            {
                Utils.WriteCookie("allowchangewidth", "");
            }

            if (pagename != "website.aspx")
            {
                if (Utils.GetCookie("allowchangewidth") == "0" || (string.IsNullOrEmpty(Utils.GetCookie("allowchangewidth")) && config.Showwidthmode == 1))
                {
                    isnarrowpage = true;
                }
            }

            //校验验证码
            if (isseccode && ispost && !ValidateVerifyCode())
            {
                return;
            }

            newtopicminute = config.Viewnewtopicminute;
        }