Discuz!NT官方社区

首页 » Discuz!NT开发与测试 » Discuz!NT整合 » 请教DISCUZ!NT:你们为什么不愿意把在.net系统登录成功后如何写cookie的方法告诉大家呢
suibian888 - 2007-8-28 16:00:00
我看了文档,这方面写得不清楚。又上论坛转了一圈,发现有50%以上的人在寻找解决这个问题的方法!
管理员去哪里了?为什么不愿意好好回答这个大家关心的问题?
suibian888 - 2007-8-28 16:05:00
这个问题不解决,我只能让用户在我的网站登录一次,然后再在论坛登录一次,麻烦死了!虽然雪人的方法也可以用http://nt.discuz.net/showtopic-13460.html,但毕竟别扭。
步行天下 - 2007-9-6 14:44:00
引用greystar高手代码.
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Discuz.Common;
using Discuz.Forum;
using Discuz.Config;

/// <summary>
/// LoginBBS 的摘要说明
/// </summary>
public class LoginBBS
{
        public LoginBBS()
        {
                //
                // TODO: 在此处添加构造函数逻辑
                //
        }
    static bool CreateBBSUser(string username, string nickname, string pwd, string mail)
    {

        // 用户名这里为tmpUsername
        // 判断用户名是否已被注册
        if (Discuz.Forum.Users.Exists(username))
        {
            // 这里提示该用户名已经被使用
            return false;
        }
        else if (!Utils.IsSafeSqlString(username))
        {
            // 提示用户名中存在非法字符
            return false;
        }
        //else if (username.Trim() == PrivateMessageFactory.SystemUserName || ForumUtils.IsBanUsername(username, config.Censoruser))
        //{
        //    //提示用户名属于禁止名单, 或者与负责发送新用户注册欢迎信件的用户名称相同...
        //    return false;
        //}
        else if (ForumUtils.InBanWordArray(username))
        {
            //提示用户名含有论坛禁止的词语, 请更换
            return false;
        }
        if (Discuz.Forum.Users.FindUserEmail(mail) != -1)
        {
            //提示email已经被其它用户注册使用
            return false;
        }
        // 你也可以增加更多你自己的检测规则, 尽量保证用户信息的合法和安全......
        Discuz.Forum.Entity.UserInfo info3 = new Discuz.Forum.Entity.UserInfo();
        info3.Username = Utils.HtmlEncode(username);
        info3.Nickname = Utils.HtmlEncode(nickname);

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

        info3.Tpp = 0;
        info3.Ppp = 0;
        info3.Templateid = 1;
        info3.Pmsound = 0;
        info3.Showemail = 0;
        info3.Invisible = 0;
        info3.Newpm = 0;
        info3.Medals = "";
        info3.Accessmasks = 0;
        info3.Website = "";
        info3.Icq = "";
        info3.Qq = "";
        info3.Yahoo = "";
        info3.Msn = "";
        info3.Skype = "";
        info3.Location = "";

        info3.Customstatus = "";

        info3.Avatar = @"avatars\common\0.gif";
        info3.Avatarwidth = 0;
        info3.Avatarheight = 0;
        info3.Bio = "";
        info3.Signature = "";
        info3.Sightml = "";
        info3.Authtime = Utils.GetDateTime();

        info3.Authstr = "";
        info3.Authflag = 0;
        info3.Groupid = UserCredits.GetCreditsUserGroupID(0f).Groupid;

        info3.Realname = "";
        info3.Idcard = "";
        info3.Mobile = "";
        info3.Phone = "";
        int uid = Discuz.Forum.Users.CreateUser(info3);

        return true;
    }

    //检测用户
    public static bool bbscheckLogin(string username, string pwd)
    {
        int uid = Discuz.Forum.Users.CheckPassword(username, pwd, true);
        if (uid == -1)
            return false;
        LoginLogs.DeleteLoginLog(DNTRequest.GetIP());
        UserCredits.UpdateUserCredits(uid);
        string pk = GeneralConfigs.GetConfig().Passwordkey;
        ForumUtils.WriteUserCookie(uid, -1, pk, 0, -1);
        int olid = OnlineUsers.UpdateInfo(pk, 10).Olid;
        OnlineUsers.UpdateAction(olid, UserAction.Login.ActionID, 0, 10);
        Discuz.Forum.Users.UpdateUserLastvisit(uid, DNTRequest.GetIP());

        return true;
    }
    //获取热帖,前十个,查看次数大于30;
    public static DataTable GetHotTopicList()
    {
       
        DataTable dt = Focuses.GetHotTopicList(10, 30);
        return dt;
    }

    public static void exitLogin(int uid)
    {

        //删除用户在线记录
        OnlineUsers.DeleteRows(uid);       
        //清除用户Cookie信息
        ForumUtils.ClearUserCookie();
       
    }

}
hnzyhua - 2007-10-24 15:05:00
顶一个。
梦飞扬 - 2007-10-24 16:15:00
问题是,以上代码往哪里添加吖???
alex786 - 2007-11-6 11:01:00
说实话,如果你真的需要DISCUZ的回答,那么请交钱!
binghe - 2007-11-6 16:36:00


引用:
原帖由 alex786 于 2007-11-6 11:01:00 发表
说实话,如果你真的需要DISCUZ的回答,那么请交钱!
syslogin - 2007-12-12 10:38:00
:-|  希望官方开这个版块的目的,不是给广大用户一个急得团团转的地方
csxcoolboy - 2007-12-12 12:08:00
使用cookie同步状态,需要把cookie的domain设置为.****.com这样的模式。
然后看下面:
登录状态同步,要让网站的登录状态同步到论坛,只需要登录后调用
        Discuz.Config.GeneralConfigInfo config = Discuz.Config.GeneralConfigs.GetConfig();
        OnlineUserInfo onlineUserinfo = OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout);
        UserCredits.UpdateUserCredits(uid);
        ForumUtils.WriteUserCookie(uid, Utils.StrToInt(DNTRequest.GetString("expires"), -1), config.Passwordkey, DNTRequest.GetInt("templateid", 0), DNTRequest.GetInt("loginmode", -1));
        OnlineUsers.UpdateAction(onlineUserinfo.Olid, UserAction.Login.ActionID, 0, config.Onlinetimeout);
        Users.UpdateUserLastvisit(uid, DNTRequest.GetIP());
就行了,如果是注消的话调用
Discuz.Config.GeneralConfigInfo config = Discuz.Config.GeneralConfigs.GetConfig();
        OnlineUserInfo onlineUserinfo = OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout);
        int userid = Utils.StrToInt(ForumUtils.GetCookie("userid"), -1);
        Users.UpdateOnlineTime(userid);
        OnlineUsers.DeleteRows(onlineUserinfo.Olid);
        ForumUtils.ClearUserCookie();
        Utils.WriteCookie("dnttemplateid", "", -999999);
hero123 - 2007-12-15 21:50:00
DISCUZ就是为了收服务费才把论坛弄的这样难搞难用!弄成傻瓜式的哪里收服务费去!你们还是用那种不开源但是出售的程序吧,那样的服务会更好!
no10pc - 2007-12-16 0:12:00
没有你们说的那么麻烦吧.

把这几个值写进去就可以了.
1
查看完整版本: 请教DISCUZ!NT:你们为什么不愿意把在.net系统登录成功后如何写cookie的方法告诉大家呢