您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程
ASP.NET网站与Discuz论坛整合的方法实例
新柔2025-06-28Discuz教程已有人查阅
导读1.引入5个DLL到项目中3.如果想从 .domainname.xxx和bbs.domainname.XXX同步还得设置一下config\general.config
1.引入5个DLL到项目中
分别是
将
分别是
using Discuz.Common;
using Discuz.Forum;
using Discuz.Config;
using Discuz.Entity;
using Discuz.Data;
2
public class Discuz_NT
{
public static ArrayList Login(string username, string password, int question, string answer)
{
Discuz.Config.GeneralConfigInfo config = Discuz.Config.GeneralConfigs.GetConfig();
OnlineUserInfo oluserinfo = OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout);
int olid = oluserinfo.Olid;
ArrayList result = new ArrayList();
int uid = -1;
//如果设置中Discuz!NT的密码模式为动网密码兼容模式(一般仅用于从动网数据转换来的论坛)
if (config.Passwordmode == 1)
{
//如果后台设置了必须使用安全提问
if (config.Secques == 1)
{
uid = Users.CheckDvBbsPasswordAndSecques(username, password, question, answer);
}
else
{
uid = Users.CheckDvBbsPassword(username, password);
}
}
//如果设置中Discuz!NT的密码模式为一般模式
else
{
//如果后台设置了必须使用安全提问
if (config.Secques == 1)
{
uid = Users.CheckPasswordAndSecques(username, password, true, question, answer);
}
else
{
//最典型的用户验证方法
uid = Users.CheckPassword(username, password, true);
}
}
//如果CheckPassword方法的返回值不为-1,则代表已经找到了相应的合法用户
if (uid != -1)
{
result.Add(true);
ShortUserInfo __userinfo = Users.GetShortUserInfo(uid);
if (__userinfo.Groupid == 8)
{
//这里添加代码提示"抱歉, 您的用户身份尚未得到验证"并return退出
//...
//
if (config.Regverify == 1)
{
result.Add("这里添加代码提示“请您到您的邮箱中点击激活链接来激活您的帐号”并return退出");
}
if (config.Regverify == 2)
{
result.Add("这里添加代码提示“您需要等待一些时间, 待系统管理员审核您的帐户后才可登录使用”并return退出");
}
}
else
{
//删除之前的错误登录信息
LoginLogs.DeleteLoginLog(DNTRequest.GetIP());
//根据积分公式刷新用户总积分
UserCredits.UpdateUserCredits(uid);
//写入用户登录后的cookie
ForumUtils.WriteUserCookie(uid, Utils.StrToInt(DNTRequest.GetString("expires"), -1), config.Passwordkey, DNTRequest.GetInt("templateid", 0), DNTRequest.GetInt("loginmode", -1));
//更新用户之后动作,如不需要可不执行
OnlineUsers.UpdateAction(olid, UserAction.Login.ActionID, 0, config.Onlinetimeout);
//更新该用户之后访问时间
Users.UpdateUserLastvisit(uid, DNTRequest.GetIP());
result.Add("登录成功");
}
}
else
{
result.Add(false);
int errcount = LoginLogs.UpdateLoginLog(DNTRequest.GetIP(), true);
if (errcount > 5)
{
result.Add("这里添加代码提示“您已经输入密码5次错误, 请15分钟后再试”并return退出");
}
else
{
result.Add("密码或安全提问第" + errcount.ToString() + "次错误, 您最多有5次机会重试");
}
}
return result;
}
public static void Logout()
{
Discuz.Config.GeneralConfigInfo config = Discuz.Config.GeneralConfigs.GetConfig();
OnlineUserInfo oluserinfo = OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout);
int olid = oluserinfo.Olid;
int uid = Convert.ToInt32(ForumUtils.GetCookie("userid"));
Users.UpdateOnlineTime(uid);
OnlineUsers.DeleteRows(olid);
ForumUtils.ClearUserCookie();
}
/// <summary>
/// 注册
/// </summary>
/// <param name="username"></param>
/// <param name="password"></param>
/// <param name="email"></param>
/// <param name="question"></param>
/// <param name="answer"></param>
/// <returns></returns>
public static bool Register(string username, string password, string email,int question,string answer)
{
GeneralConfigInfo config = GeneralConfigs.GetConfig();
OnlineUserInfo oluserinfo = OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout);
UserGroupInfo usergroupinfo = UserGroups.GetUserGroupInfo(oluserinfo.Groupid);
//如果用户名符合注册规则, 则判断是否已存在
if (Users.Exists(username))
{
//
// 这里提示错误信息"用户名已经存在!"
//
return false;
}
UserInfo __userinfo = new UserInfo();
__userinfo.Username = Utils.HtmlEncode(username);
__userinfo.Nickname = "";
__userinfo.Password = Utils.MD5(password);
__userinfo.Secques = ForumUtils.GetUserSecques(question, answer);
__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.Email = email;
__userinfo.Bday = tmpBday;
__userinfo.Sigstatus = 1;
if (__userinfo.Sigstatus != 0)
{
__userinfo.Sigstatus = 1;
}
__userinfo.Tpp = 0;
__userinfo.Ppp = 0;
__userinfo.Templateid = 1;
__userinfo.Pmsound = 0;
__userinfo.Showemail = 0;
int receivepmsetting = 1;
string receivesetting = "2,4";
foreach (string rpms in receivesetting.Split(','))
{
if (rpms != string.Empty)
{
int tmp = int.Parse(rpms);
receivepmsetting = receivepmsetting | tmp;
}
}
if (config.Regadvance == 0)
{
receivepmsetting = 7;
}
__userinfo.Newsletter = (ReceivePMSettingType)receivepmsetting;
__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 = "";
if (usergroupinfo.Allowcstatus == 1)
{
__userinfo.Customstatus = "";
}
else
{
__userinfo.Customstatus = "";
}
__userinfo.Avatar = @"avatars\common\0.gif";
__userinfo.Avatarwidth = 0;
__userinfo.Avatarheight = 0;
__userinfo.Bio = "";
__userinfo.Signature = "";
PostpramsInfo _postpramsinfo = new PostpramsInfo();
_postpramsinfo.Usergroupid = usergroupid;
_postpramsinfo.Attachimgpost = config.Attachimgpost;
_postpramsinfo.Showattachmentpath = config.Showattachmentpath;
_postpramsinfo.Hide = 0;
_postpramsinfo.Price = 0;
_postpramsinfo.Sdetail = __userinfo.Signature;
_postpramsinfo.Smileyoff = 1;
_postpramsinfo.Bbcodeoff = 1 - usergroupinfo.Allowsigbbcode;
_postpramsinfo.Parseurloff = 1;
_postpramsinfo.Showimages = usergroupinfo.Allowsigimgcode;
_postpramsinfo.Allowhtml = 0;
_postpramsinfo.Smiliesinfo = Smilies.GetSmiliesListWithInfo();
_postpramsinfo.Customeditorbuttoninfo = Editors.GetCustomEditButtonListWithInfo();
_postpramsinfo.Smiliesmax = config.Smiliesmax;
__userinfo.Sightml = UBB.UBBToHTML(_postpramsinfo);
//
__userinfo.Authtime = Utils.GetDateTime();
//邮箱激活链接验证
if (config.Regverify == 1)
{
__userinfo.Authstr = ForumUtils.CreateAuthStr(20);
__userinfo.Authflag = 1;
__userinfo.Groupid = 8;
SendEmail(tmpUsername, password.Trim(), email.Trim(), __userinfo.Authstr);
}
//系统管理员进行后台验证
else if (config.Regverify == 2)
{
__userinfo.Authstr = "";
__userinfo.Groupid = 8;
__userinfo.Authflag = 1;
}
else
{
__userinfo.Authstr = "";
__userinfo.Authflag = 0;
__userinfo.Groupid = UserCredits.GetCreditsUserGroupID(0).Groupid;
}
__userinfo.Realname = "";
__userinfo.Idcard = "";
__userinfo.Mobile = "";
__userinfo.Phone ="";
int uid = Users.CreateUser(__userinfo);
if (config.Welcomemsg == 1)
{
PrivateMessageInfo __privatemessageinfo = new PrivateMessageInfo();
string curdatetime = Utils.GetDateTime();
// 收件箱
__privatemessageinfo.Message = config.Welcomemsgtxt;
__privatemessageinfo.Subject = "欢迎您的加入! (请勿回复本信息)";
__privatemessageinfo.Msgto = __userinfo.Username;
__privatemessageinfo.Msgtoid = uid;
__privatemessageinfo.Msgfrom = PrivateMessages.SystemUserName;
__privatemessageinfo.Msgfromid = 0;
__privatemessageinfo.New = 1;
__privatemessageinfo.Postdatetime = curdatetime;
__privatemessageinfo.Folder = 0;
PrivateMessages.CreatePrivateMessage(__privatemessageinfo, 0);
}
if (config.Regverify == 0)
{
UserCredits.UpdateUserCredits(uid);
ForumUtils.WriteUserCookie(uid, -1, config.Passwordkey);
OnlineUsers.UpdateAction(olid, UserAction.Register.ActionID, 0, config.Onlinetimeout);
Statistics.ReSetStatisticsCache();
return true;
}
else
{
if (config.Regverify == 1)
{
//这里添加代码提示“注册成功, 请您到您的邮箱中点击激活链接来激活您的帐号"并return退出
return true;
}
if (config.Regverify == 2)
{
//这里添加代码提示“您注册成功, 但需要系统管理员审核您的帐户后才可登陆使用"并return退出
return true;
}
}
return false;
}
}
3.如果想从 .domainname.xxx和bbs.domainname.XXX同步还得设置一下config\general.config将
<CookieDomain/>
改为
<CookieDomain>domainname.XXX</CookieDomain>
本文标签:
很赞哦! ()
上一篇:discuz插件开发入门教程
下一篇:调用discuz编辑器的步骤方法
相关教程
图文教程
Discuz的NT在线用户功能介绍
在上文(Discuz!NT URL地址重写) 中, 聊到了“在线用户”功能,因为当时介绍的重点不是“在线”那一块,所以没做深入介绍。这就为今天这篇文章埋下了“伏笔”。
腾讯云搭建Discuz个人论坛的方法
LAMP是Linux、Apache、MySQL和PHP的缩写,是Discuz论坛系统依赖的基础运行环境。我们先来准备LAMP环境安装MySQL使用yum安装MySQL:
Discuz如何设置163邮箱注册验证
1、网易163邮箱不做设置(在设置中可以看到默认就是启用这两个服务的,但是新版本的Discuz可能不再允许这么做)
认识修改Discuz程序文件功能说明
先从根目录开始,根目录文件一般都是入口,即执行具体功能的代码一般不在这些文件中,而是在其调用的文件中admin.php 系统站点管理入口文件api.php Discuz!合作应用入口文件(例如漫游、支付宝什么的都走这里)
相关源码
-
(PC+WAP)中英双语户外用品帐篷装备pbootcms网站模板下载这款基于PbootCMS开发的中英文双语模板专为户外装备行业设计,适配PC和移动设备。模板采用现代化设计风格,突出户外产品的功能性和实用性,帮助企业建立专业的国际化展示平台。查看源码 -
pbootcms模板(自适应)花店鲜花花卉园艺网站源码一款基于PbootCMS内核开发的花店鲜花配送与花卉园艺企业网站模板。该模板采用响应式设计,自动适配手机、平板等移动设备,确保用户在任何设备上都能获得优质浏览体验。查看源码 -
(PC+WAP)蓝色电缆桥架五金钢结构机械PbootCMS模板下载采用PC与WAP双端适配设计,满足桌面设备和移动端访问需求。专注服务于电缆桥架、钢结构及五金机械制造领域,通过结构化布局展示产品特性与技术参数,后台数据一体化管理提升内容维护效率。查看源码 -
(自适应响应式)超市仓储仓库货架展架网站pbootcms源码下载本模板为货架展架、仓储货架行业量身打造,采用PbootCMS内核开发,充分考虑了货架产品展示和企业形象展示的需求。模板设计简洁大方,突出产品特点,能够有效展示各类货架产品的规格参数和应用场景,帮助访客快速了解企业核心业务和产品优势。查看源码 -
(自适应响应式)高新技术科技能源pbootcms网站HTML5模板本模板基于PbootCMS内核开发,为高新技术、科技研发、能源技术等科技型企业设计。采用HTML5+CSS3前沿技术,具备完善的响应式布局,能够自动适配手机、平板和电脑等多种终端设备。模板设计风格简约大气查看源码 -
帝国cms7.5女性护肤搭配美妆潮流网站源码带数据4.5G本模板专为女性美容护肤行业设计,提供美容护肤、发型设计、女性健康、时尚化妆、娱乐新闻、服饰搭配等女性潮流资讯内容展示。采用帝国CMS7.5开发,同步生成电脑端和手机端,满足用户对美容时尚信息的获取需求。查看源码
| 分享笔记 (共有 篇笔记) |
