Discuz!NT 2.5 正式版 下载
beta、RC版升级补丁
中秋模板发布
首届Discuz!NT 模板大赛圆满结束
著名音乐网站SoGua网、分贝网
采用Discuz!NT搭建社区
FIFA Online2官网论坛使用Discuz!NT
游戏城寨论坛使用Discuz!NT搭建
Discuz!NT 2.5正式开源 Discuz!NT文档中心
用户整合说明文档
Discuz!NT亮相微软Tech-Ed 2007
Discuz!NT情景搞笑短片抢先看
武林三国《赤壁》下(双线二区)开服好礼大放送
1/4页1234 跳转到查看:15006
发新话题 回复该主题
1. 将鼠标移动到页面左上角待出现光标后,再慢慢移动到光标上,看帖更清爽
2. 键盘左右键可以进行前后翻页操作
帮助

2.0整合完整代码及解决方案

2.0整合完整代码及解决方案

代码如下
private static bool CreateBBSUser(string username, string nickname, string pwd, string mail)
{
    if (Users.Exists(username))
    {
        return false;
    }
    if (!Utils.IsSafeSqlString(username))
    {
        return false;
    }
    if (ForumUtils.InBanWordArray(username))
    {
        return false;
    }
    if (Users.FindUserEmail(mail) != -1)
    {
        return false;
    }
    UserInfo info = new UserInfo();
    info.set_Username(Utils.HtmlEncode(username));
    info.set_Nickname(Utils.HtmlEncode(nickname));
    info.set_Password(Utils.MD5(pwd));
    info.set_Secques(ForumUtils.GetUserSecques(0, ""));
    info.set_Gender(0);
    info.set_Adminid(0);
    info.set_Groupexpiry(0);
    info.set_Extgroupids("");
    info.set_Regip(DNTRequest.GetIP());
    info.set_Joindate(Utils.GetDateTime());
    info.set_Lastip(DNTRequest.GetIP());
    info.set_Lastvisit(Utils.GetDateTime());
    info.set_Lastactivity(Utils.GetDateTime());
    info.set_Lastpost(Utils.GetDateTime());
    info.set_Lastpostid(0);
    info.set_Lastposttitle("");
    info.set_Posts(0);
    info.set_Digestposts(0);
    info.set_Oltime(0);
    info.set_Pageviews(0);
    info.set_Credits(0);
    info.set_Extcredits1(Scoresets.GetScoreSet(1).get_Init());
    info.set_Extcredits2(Scoresets.GetScoreSet(2).get_Init());
    info.set_Extcredits3(Scoresets.GetScoreSet(3).get_Init());
    info.set_Extcredits4(Scoresets.GetScoreSet(4).get_Init());
    info.set_Extcredits5(Scoresets.GetScoreSet(5).get_Init());
    info.set_Extcredits6(Scoresets.GetScoreSet(6).get_Init());
    info.set_Extcredits7(Scoresets.GetScoreSet(7).get_Init());
    info.set_Extcredits8(Scoresets.GetScoreSet(8).get_Init());
    info.set_Avatarshowid(0);
    info.set_Email(mail);
    info.set_Bday("");
    info.set_Sigstatus(0);
    info.set_Tpp(0);
    info.set_Ppp(0);
    info.set_Templateid(1);
    info.set_Pmsound(0);
    info.set_Showemail(0);
    info.set_Invisible(0);
    info.set_Newpm(0);
    info.set_Medals("");
    info.set_Accessmasks(0);
    info.set_Website("");
    info.set_Icq("");
    info.set_Qq("");
    info.set_Yahoo("");
    info.set_Msn("");
    info.set_Skype("");
    info.set_Location("");
    info.set_Customstatus("");
    info.set_Avatar(@"avatars\common\0.gif");
    info.set_Avatarwidth(0);
    info.set_Avatarheight(0);
    info.set_Bio("");
    info.set_Signature("");
    info.set_Sightml("");
    info.set_Authtime(Utils.GetDateTime());
    info.set_Authstr("");
    info.set_Authflag(0);
    info.set_Groupid(UserCredits.GetCreditsUserGroupID(0f).get_Groupid());
    info.set_Realname("");
    info.set_Idcard("");
    info.set_Mobile("");
    info.set_Phone("");
    int num = Users.CreateUser(info);
    return true;
}

public static bool LoginBBS(string username, string pwd)
{
    int num = Users.CheckPassword(username, pwd, true);
    if (num == -1)
    {
        return false;
    }
    LoginLogs.DeleteLoginLog(DNTRequest.GetIP());
    UserCredits.UpdateUserCredits(num);
    string str = GeneralConfigs.GetConfig().get_Passwordkey();
    ForumUtils.WriteUserCookie(num, -1, str, 0, -1);
    OnlineUsers.UpdateAction(OnlineUsers.UpdateInfo(str, 10).get_Olid(), UserAction.Login.get_ActionID(), 0, 10);
    Users.UpdateUserLastvisit(num, DNTRequest.GetIP());
    return true;
}

public static bool IsBBSLogin()
{
    bool flag2;
    try
    {
        string s = ForumUtils.GetCookie("userid");
        if (s == "")
        {
            flag2 = false;
        }
        else
        {
            ShortUserInfo shortUserInfo = Users.GetShortUserInfo(int.Parse(s));
            string str2 = shortUserInfo.Username();
            string str3 = ForumUtils.GetCookie("password");
            str3 = DES.Decode(HttpContext.Current.Server.UrlDecode(str3), GeneralConfigs.GetConfig().get_Passwordkey());
            SqlParameter[] parameterArray = new SqlParameter[] { new SqlParameter("@username", str2), new SqlParameter("@password", str3) };
            HttpCookie cookie = new HttpCookie("Home178.User");
            using (DataTable table = Util.ExecForDtl_SP("user_GetUserPwd", parameterArray))
            {
                if ((table == null) || (table.Rows.Count != 1))
                {
                    return false;
                }
                cookie.Value = string.Concat(new object[] { "这里是你的网站判断用户是否登录标记要存放的值"});
                cookie.Domain = ".xxx.com";  //这里很重要,所有站点要设成一样,对于discuz来说,只要在后台管理中将cookie域设成一样的就行了
                HttpContext.Current.Response.Cookies.Add(cookie);
                flag2 = true;
            }
        }
    }
    catch
    {
        flag2 = false;
    }
    return flag2;
}
public static DataTable GetHotTopicList()
{
    return Focuses.GetHotTopicList(10, 30);
}
public static DataTable GetDigestList()
{
    return Focuses.GetDigestTopicList(10);
}

TOP

 

回复:2.0整合完整代码及解决方案

在我们要加一个用户到我们系统时,调用createbbsuser登录时先调用IsBBSLogin先判断BBS里有没有登录.如果没有的的话调用自己的登录代码,同时在自己的登录代码里要调用LoginBBS 这样为BBS也自动实现登录
重要一点:在对BBS的后台一定要设定cookie域名为.xxx.com  我们的代码中也应该是一致.设定完成后.需要将BBS下的Config目录复制一个放到我们系统的目录下.还有dnt.config也是一样,要复制,完成这一步的目的是为了实现所有站点的passwordkey是一样的.如果不一样,则不能共享cookie

最后.在我们的系统Global.asax文件中要对discuz的类库进行初始操作

<%@ Application Language="C#" %>
<%@ Import Namespace="Discuz.Config" %>
<%@ Import Namespace="Discuz.Config.Provider" %>
<script runat="server">

    void Application_Start(object sender, EventArgs e)
    {
        // 在应用程序启动时运行的代码
   
          BaseConfigInfo info = BaseConfigProvider.Instance();
        if (info != null)
        {
            GeneralConfigInfo config = GeneralConfigs.GetConfig();

        }
    }
   
    void Application_End(object sender, EventArgs e)
    {
        //  在应用程序关闭时运行的代码

    }
       
    void Application_Error(object sender, EventArgs e)
    {
        // 在出现未处理的错误时运行的代码

    }

    void Session_Start(object sender, EventArgs e)
    {
        // 在新会话启动时运行的代码

    }

    void Session_End(object sender, EventArgs e)
    {
        // 在会话结束时运行的代码。
        // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
        // InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
        // 或 SQLServer,则不会引发该事件。

    }
     
</script>




如果操作完成,则你的网站可以实现单点登录了.

TOP

 

回复:2.0整合完整代码及解决方案

大家来顶一下啊.

TOP

 

回复:2.0整合完整代码及解决方案

不错,学习一下
论坛开源,期待中……

TOP

 

强烈要求官方推出模板文档和调用插件

强烈要求官方推出模板文档和调用插件
我的qq:157868,欢迎交流。
欢迎访问我的摄影网站:徽州摄影网

TOP

 

回复:2.0整合完整代码及解决方案

这个只是注册吧?注册我认为只要转到BBS上注册就可以了

TOP

 

回复:2.0整合完整代码及解决方案

看不明白怎么用。
中国人力资源城市网(http://www.hrmc.cn)
建立和谐人文社区 打造一流人资人才

TOP

 

回复:2.0整合完整代码及解决方案

因为我的系统本来就有用户,我现在要做的是让BBS兼容我的系统,而不是反过来.我要保持同步.

TOP

 

回复:2.0整合完整代码及解决方案

请详细讲讲配置好吗?要具体的,比如说我现在有一个.net的站做为主站,如何整合论坛呢,你的整合方案的注册口在主站还是在bbs呢,还是两边注册都可以呢?呵呵,最好在主站注册!

TOP

 

回复:2.0整合完整代码及解决方案

你只同步了登录,不能算是整合。
真正的整合是同步注册、登录、删除用户。在其中一个程序操作同时影响另一个程序。

TOP

 
1/4页1234 跳转到
发表新主题 回复该主题