Tom-Net

导航

整合DIscuz1

这里终结下两点主意的地方:
1,当你的程序跟论坛不在一个项目里,你需要添加discuz的动态库(dll),添加引用时,总是提示一个异常,[ 请检查DNT.config中Dbtype节点数据库类型是否正确,例如:SqlServer、Access、MySql]这时你要看看,discuz的操作数据库动态库引用没引用进来.例如:我用的sql 那么就需要引用discuz.data.sqlserver这个动态库。
2,在测试登陆时,你一定要用发表的网站去测试。因为cookie是需要记录你的网站地址的。地址一样才能被discuz程序调用。这个还没经过进一步的判定。但估计应该是这样。

接下来发布一些我整合时参照的部分代码:

/**//// <summary>
        /// 注册dnt用户
        /// </summary>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <param name="email"></param>
        /// <param name="nickname"></param>
        /// <returns></returns>
        public static bool Register(string username, string password, string email, string nickname)
        {
            GeneralConfigInfo config = GeneralConfigs.GetConfig();
            OnlineUserInfo oluserinfo = OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout);
            UserGroupInfo usergroupinfo = UserGroups.GetUserGroupInfo(oluserinfo.Groupid);

            UserInfo userinfo = new UserInfo();
            userinfo.Username = username;
            userinfo.Nickname = nickname;
            userinfo.Password = Utils.MD5(password);
            userinfo.Email = email;

            userinfo.Secques = "";
            userinfo.Gender = 0;
            userinfo.Adminid = 0;
            userinfo.Groupexpiry = 0;
            userinfo.Extgroupids = "";
            userinfo.Regip = DNTRequest.GetIP();
            userinfo.Joindate = Utils.GetDateTime();
            userinfo.Lastip = DNTRequest.GetIP();
            userinfo.Lastvisit = Utils.GetDateTime();
            userinfo.Lastactivity = Utils.GetDateTime();
            userinfo.Lastpost = Utils.GetDateTime();
            userinfo.Lastpostid = 0;
            userinfo.Lastposttitle = "";
            userinfo.Posts = 0;
            userinfo.Digestposts = 0;
            userinfo.Oltime = 0;
            userinfo.Pageviews = 0;
            userinfo.Credits = 0;
            userinfo.Extcredits1 = Scoresets.GetScoreSet(1).Init;
            userinfo.Extcredits2 = Scoresets.GetScoreSet(2).Init;
            userinfo.Extcredits3 = Scoresets.GetScoreSet(3).Init;
            userinfo.Extcredits4 = Scoresets.GetScoreSet(4).Init;
            userinfo.Extcredits5 = Scoresets.GetScoreSet(5).Init;
            userinfo.Extcredits6 = Scoresets.GetScoreSet(6).Init;
            userinfo.Extcredits7 = Scoresets.GetScoreSet(7).Init;
            userinfo.Extcredits8 = Scoresets.GetScoreSet(8).Init;
            userinfo.Avatarshowid = 0;
            userinfo.Bday = "";
            userinfo.Sigstatus = 1;

            userinfo.Tpp = 0;
            userinfo.Ppp = 0;
            userinfo.Templateid = 0;
            userinfo.Pmsound = 1;
            userinfo.Showemail = 0;

            userinfo.Newsletter = ReceivePMSettingType.ReceiveAllPMWithHint;
            userinfo.Invisible = 0;
            userinfo.Newpm = 0;
            userinfo.Medals = "";
            if (config.Welcomemsg == 1)
            {
                userinfo.Newpm = 1;
            }
            userinfo.Accessmasks = 0;
            userinfo.Website = "";
            userinfo.Icq = "";
            userinfo.Qq = "";
            userinfo.Yahoo = "";
            userinfo.Msn = "";
            userinfo.Skype = "";
            userinfo.Location = "";
            userinfo.Customstatus = "";
           
            userinfo.Avatar = @"avatars\common\0.gif";
            userinfo.Avatarwidth = 0;
            userinfo.Avatarheight = 0;
            userinfo.Bio = "";
            userinfo.Signature = "";

            PostpramsInfo postpramsinfo = new PostpramsInfo();
            postpramsinfo.Usergroupid = oluserinfo.Groupid;//7
            postpramsinfo.Attachimgpost = config.Attachimgpost;//1
            postpramsinfo.Showattachmentpath = config.Showattachmentpath;//0
            postpramsinfo.Hide = 0;
            postpramsinfo.Price = 0;
            postpramsinfo.Sdetail = userinfo.Signature;
            postpramsinfo.Smileyoff = 1;
            postpramsinfo.Bbcodeoff = 1 - usergroupinfo.Allowsigbbcode;//1
            postpramsinfo.Parseurloff = 1;
            postpramsinfo.Showimages = usergroupinfo.Allowsigimgcode;//0
            postpramsinfo.Allowhtml = 0;
            postpramsinfo.Smiliesinfo = Smilies.GetSmiliesListWithInfo();
            postpramsinfo.Customeditorbuttoninfo = Editors.GetCustomEditButtonListWithInfo();
            postpramsinfo.Smiliesmax = config.Smiliesmax;//5

            userinfo.Sightml = "";

            //
            userinfo.Authtime = Utils.GetDateTime();

            userinfo.Authstr = "";
            userinfo.Authflag = 0;
            userinfo.Groupid = UserCredits.GetCreditsUserGroupID(0).Groupid;//10
           
            userinfo.Realname = "";
            userinfo.Idcard = "";
            userinfo.Mobile = "";
            userinfo.Phone = "";

            int uid = Users.CreateUser(userinfo);

            //根据积分公式刷新用户总积分
            UserCredits.UpdateUserCredits(uid);

            //写入用户登录后的cookie
            ForumUtils.WriteUserCookie(uid, -1, config.Passwordkey);

            //更新用户最后动作,如不需要可不执行
            OnlineUsers.UpdateAction(oluserinfo.Olid, UserAction.Register.ActionID, 0, config.Onlinetimeout);


            Statistics.ReSetStatisticsCache();
           
            return true;
        }

        /**//// <summary>
        /// 登陆论坛
        /// </summary>
        /// <param name="username"></param>
        public static void Login(string username)
        {
            GeneralConfigInfo config = GeneralConfigs.GetConfig();
            OnlineUserInfo oluserinfo = OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout);

            int uid = Users.GetUserID(username);

            //删除之前的错误登录信息
            LoginLogs.DeleteLoginLog(DNTRequest.GetIP());

            //根据积分公式刷新用户总积分
            UserCredits.UpdateUserCredits(uid);

            //写入用户登录后的cookie
            ForumUtils.WriteUserCookie(uid, -1, config.Passwordkey);

            //更新用户最后动作,如不需要可不执行
            OnlineUsers.UpdateAction(oluserinfo.Olid, UserAction.Login.ActionID, 0, config.Onlinetimeout);

            //更新该用户最后访问时间
            Users.UpdateUserLastvisit(uid, DNTRequest.GetIP());

        }

        /**//// <summary>
        /// 论坛退出
        /// </summary>
        public static void Logout()
        {
            GeneralConfigInfo config = GeneralConfigs.GetConfig();
            OnlineUserInfo oluserinfo = OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout);

            if (oluserinfo.Userid > 0)
            {
                Users.UpdateOnlineTime(oluserinfo.Userid);
                OnlineUsers.DeleteRows(oluserinfo.Olid);
                ForumUtils.ClearUserCookie();
            }
        }

posted on 2009-08-05 11:32  Tom_Net  阅读(134)  评论(0)    收藏  举报