您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程
打通Discuz!NT类VS2005代码实例
元骞振2025-07-02Discuz教程已有人查阅
导读本C#程序用于打通 Discuz!NT 2.1.202主要功能如下:1、自动论坛注册2、前台用户同步登陆,并同步密码3、前台用户同步退出4、后台管理员同步登陆5、后台管理员同步退出
本C#程序用于打通 Discuz!NT 2.1.202
主要功能如下:
1、自动论坛注册
2、前台用户同步登陆,并同步密码
3、前台用户同步退出
4、后台管理员同步登陆
5、后台管理员同步退出
注意:
本程序用到的password均为主用户表的MD5加密密码
将论坛登陆和退出改成自己平台登陆和登出
主要功能如下:
1、自动论坛注册
2、前台用户同步登陆,并同步密码
3、前台用户同步退出
4、后台管理员同步登陆
5、后台管理员同步退出
注意:
本程序用到的password均为主用户表的MD5加密密码
将论坛登陆和退出改成自己平台登陆和登出
using System;
using System.IO;
using System.Text;
using System.Web.SessionState;
using System.Web;
using System.Web.UI;
using System.Data;
using Discuz.Common;
using Discuz.Forum;
using Discuz.Config;
using Discuz.Data;
using Discuz.Entity;
using Discuz.Web.UI.Pages;
namespace Discuz_NT.combine
{
/// <summary>
/// by wolfgreen 2008.09.5
/// </summary>
public class DcUsers : BasePage
{
protected Page page;
public int userRegister(string m_userName,string m_password,string m_email)
{
UserInfo userinfo = new UserInfo();
userinfo.Username = m_userName;
userinfo.Nickname = Utils.HtmlEncode(DNTRequest.GetString("nickname"));
userinfo.Password = m_password;//Utils.MD5(m_password);
userinfo.Secques = ForumUtils.GetUserSecques(DNTRequest.GetInt("question", 0), DNTRequest.GetString("answer"));
userinfo.Gender = DNTRequest.GetInt("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 = m_email;
userinfo.Bday = "";
userinfo.Sigstatus = DNTRequest.GetInt("sigstatus", 0);
if (userinfo.Sigstatus != 0)
{
userinfo.Sigstatus = 1;
}
userinfo.Tpp = DNTRequest.GetInt("tpp", 0);
userinfo.Ppp = DNTRequest.GetInt("ppp", 0);
userinfo.Templateid = DNTRequest.GetInt("templateid", 1);
userinfo.Pmsound = DNTRequest.GetInt("pmsound", 0);
userinfo.Showemail = DNTRequest.GetInt("showemail", 0);
int receivepmsetting = 1;
foreach (string rpms in DNTRequest.GetString("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 = DNTRequest.GetInt("invisible", 0);
userinfo.Newpm = 0;
userinfo.Medals = "";
if (config.Welcomemsg == 1)
{
userinfo.Newpm = 1;
}
userinfo.Accessmasks = DNTRequest.GetInt("accessmasks", 0);
userinfo.Website = Utils.HtmlEncode(DNTRequest.GetString("website"));
userinfo.Icq = Utils.HtmlEncode(DNTRequest.GetString("icq"));
userinfo.Qq = Utils.HtmlEncode(DNTRequest.GetString("qq"));
userinfo.Yahoo = Utils.HtmlEncode(DNTRequest.GetString("yahoo"));
userinfo.Msn = Utils.HtmlEncode(DNTRequest.GetString("msn"));
userinfo.Skype = Utils.HtmlEncode(DNTRequest.GetString("skype"));
userinfo.Location = Utils.HtmlEncode(DNTRequest.GetString("location"));
if (usergroupinfo.Allowcstatus == 1)
{
userinfo.Customstatus = Utils.HtmlEncode(DNTRequest.GetString("customstatus"));
}
else
{
userinfo.Customstatus = "";
}
userinfo.Avatar = @"avatars\common\0.gif";
userinfo.Avatarwidth = 0;
userinfo.Avatarheight = 0;
userinfo.Bio = DNTRequest.GetString("bio");
userinfo.Signature = Utils.HtmlEncode(ForumUtils.BanWordFilter(DNTRequest.GetString("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();
userinfo.Authstr = "";
userinfo.Authflag = 0;
userinfo.Groupid = UserCredits.GetCreditsUserGroupID(0).Groupid;
userinfo.Realname = DNTRequest.GetString("realname");
userinfo.Idcard = DNTRequest.GetString("idcard");
userinfo.Mobile = DNTRequest.GetString("mobile");
userinfo.Phone = DNTRequest.GetString("phone");
return Users.CreateUser(userinfo);
}
public bool Login(string m_userName, string m_password,string m_mail)
{
if(m_userName.Trim() == "")
{
return false;
}
int uid = Discuz.Forum.Users.GetUserID(m_userName);
if(uid<=0)
{
//注册一下
uid = this.userRegister(m_userName,m_password,m_mail);
}
if(uid > 0)
{
//修改密码
if (ModifyPwd(uid, m_password))
{
//设置cookie
setBBSCookie(uid);
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
private void setBBSCookie(int m_uid)
{
Discuz.Forum.UserCredits.UpdateUserCredits(m_uid);
Discuz.Forum.ForumUtils.WriteUserCookie(
m_uid,
Utils.StrToInt(DNTRequest.GetString("expires"), -1),
config.Passwordkey,
DNTRequest.GetInt("templateid", 0),
DNTRequest.GetInt("loginmode", -1));
Discuz.Forum.Users.UpdateUserLastvisit(m_uid, DNTRequest.GetIP());
}
/// <summary>
/// 修改用户密码
/// </summary>
/// <param name="uid">论坛用户ID</param>
/// <param name="m_password">MD5加密好的密码</param>
/// <returns></returns>
public bool ModifyPwd(int uid, string m_password)
{
//<param name="originalpassword">是否非MD5密码</param>
return Users.UpdateUserPassword(uid, m_password, false);
}
public bool ModifyPwd(string m_userName,string m_newpassword)
{
if(m_userName.Trim() == "")
{
return false;
}
int uid = Discuz.Forum.Users.GetUserID(m_userName);
if(uid > 0 )
{
return ModifyPwd(uid, m_newpassword);
}
else
{
return false;
}
}
/// <summary>
/// 用户登出
/// </summary>
/// <param name="m_userName"></param>
public void LoginOut(string m_userName)
{
int uid = Discuz.Forum.Users.GetUserID(m_userName);
if(uid>=1)
{
Users.UpdateOnlineTime(uid);
OnlineUsers.DeleteRows(olid);
ForumUtils.ClearUserCookie();
Utils.WriteCookie(Utils.GetTemplateCookieName(), "", -999999);
}
}
public void LoginOutAdmin(string m_userName)
{
LoginOut(m_userName);
//去后台登陆cookie
HttpCookie cookie = HttpContext.Current.Request.Cookies["dntadmin"];
cookie.Values["key"] = "";
cookie.Expires = DateTime.Now.AddDays(-10);
HttpContext.Current.Response.AppendCookie(cookie);
HttpContext.Current.Response.Cookies.Clear();
}
public string LoginAdmin(string m_userName, string m_password, string m_mail)
{
bool isloginFront = Login(m_userName, m_password,m_mail);
int m_userid = Discuz.Forum.Users.GetUserID(m_userName);
try
{
if (isloginFront && m_userid > 0)
{
//后台admin
DataTable dt = new DataTable();
/*
if (config.Passwordmode == 1)
{
int uid = Users.CheckDvBbsPassword(DNTRequest.GetString("username"), DNTRequest.GetString("password"));
dt = DatabaseProvider.GetInstance().GetUserInfo(uid);
}
else
{
* */
dt = DatabaseProvider.GetInstance().GetUserInfo(m_userid);
//}
if (dt.Rows.Count > 0)
{
UserGroupInfo usergroupinfo = AdminUserGroups.AdminGetUserGroupInfo(Convert.ToInt32(dt.Rows[0]["groupid"].ToString()));
if (usergroupinfo.Radminid == 1)
{
ForumUtils.WriteUserCookie(Convert.ToInt32(dt.Rows[0]["uid"].ToString().Trim()), 1440, GeneralConfigs.GetConfig().Passwordkey);
int userid = Convert.ToInt32(dt.Rows[0]["uid"].ToString().Trim());
string username = m_userName;
int usergroupid = Convert.ToInt16(dt.Rows[0]["groupid"].ToString().Trim());
string secques = dt.Rows[0]["secques"].ToString().Trim();
string ip = DNTRequest.GetIP();
UserGroupInfo __usergroupinfo = AdminUserGroups.AdminGetUserGroupInfo(usergroupid);
string grouptitle = __usergroupinfo.Grouptitle;
HttpCookie cookie = new HttpCookie("dntadmin");
cookie.Values["key"] = ForumUtils.SetCookiePassword(m_password + secques + userid.ToString(), config.Passwordkey);
cookie.Expires = DateTime.Now.AddMinutes(30);
HttpContext.Current.Response.AppendCookie(cookie);
AdminVistLogs.InsertLog(userid, username, usergroupid, grouptitle, ip, "后台管理员登陆", "");
try
{
SoftInfo.LoadSoftInfo();
}
catch
{
;
}
//升级general.config文件
try
{
GeneralConfigs.Serialiaze(GeneralConfigs.GetConfig(), Server.MapPath("../config/general.config"));
}
catch { }
return "";
}
else
{
return "用户不是管理员身分,因此无法登陆后台";
}
}
else
{
return "用户不存在或密码错误";
}
}
else
{
return "未登陆前台!";
}
}
catch(Exception ex)
{
return ex.Message;
}
}
/// <summary>
/// 查看是否登陆,如果登陆那么返回空
/// </summary>
/// <returns></returns>
public string GetAdminLoginInfo()
{
config = GeneralConfigs.GetConfig();
// 如果IP访问列表有设置则进行判断
if (config.Adminipaccess.Trim() != "")
{
string[] regctrl = Utils.SplitString(config.Adminipaccess, "\n");
if (!Utils.InIPArray(DNTRequest.GetIP(), regctrl))
{
//Context.Response.Redirect(BaseConfigs.GetForumPath + "admin/syslogin.aspx");
return "IP地址被拒绝!";
}
}
OnlineUserInfo oluserinfo = OnlineUsers.UpdateInfo(config.Passwordkey, config.Onlinetimeout);
UserGroupInfo usergroupinfo = AdminUserGroups.AdminGetUserGroupInfo(oluserinfo.Groupid);
if (oluserinfo.Userid <= 0 || usergroupinfo.Radminid != 1)
{
//Context.Response.Redirect(BaseConfigs.GetForumPath + "admin/syslogin.aspx");
return "管理员数据有误!";
}
string secques = Users.GetUserInfo(oluserinfo.Userid).Secques;
// 管理员身份验证
if (Context.Request.Cookies["dntadmin"] == null || Context.Request.Cookies["dntadmin"]["key"] == null || ForumUtils.GetCookiePassword(Context.Request.Cookies["dntadmin"]["key"].ToString(), config.Passwordkey) != (oluserinfo.Password + secques + oluserinfo.Userid.ToString()))
{
//Context.Response.Redirect(BaseConfigs.GetForumPath + "admin/syslogin.aspx");
return "Cookie不存在!" ;
}
else
{
HttpCookie cookie = HttpContext.Current.Request.Cookies["dntadmin"];
cookie.Values["key"] = ForumUtils.SetCookiePassword(oluserinfo.Password + secques + oluserinfo.Userid.ToString(), config.Passwordkey);
cookie.Expires = DateTime.Now.AddMinutes(30);
HttpContext.Current.Response.AppendCookie(cookie);
}
return "" ;
}
public DcUsers(Page p)
{
page = p;
}
public DcUsers()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
}
}
本文标签:
很赞哦! ()
相关教程
图文教程
优化Discuz安装环境加快安装速度的方法
在互联网时代,论坛仍然是许多社区交流的重要平台,discuz作为一个广受欢迎的开源论坛系统,如何快速部署和优化其安装环境成为了许多站长关注的焦点。
DiscuzNT安装配置问题
这几天在看Discuz!NT的相关资料,安装时出现了一些问题,感觉挺麻烦的,没有duwamish和petshop安装时那么简单容易,discuz配置文件有好几个
discuz抱歉该附件无法读取的解决方法
最近升级了x2.0的补丁,发现普通用户在下载附件的时候会出现‘抱歉,该附件无法读取’的提示,但下载分已经扣了 搞得大家非常不满。但管理员之类的不扣下载分的是可以下载的。
Discuz实现NT缓存设计
作为一个社区类型软件,大并发支持和高效稳定运行永远是“硬道理”,而有效安全的使用缓存恰恰能起到事倍功半的效果。而.NET本身所提供的缓存机制又显得过于“单薄”,比如说订制
相关源码
-
(自适应)中英双语配线器材扎带线卡网站pbootcms模板免费下载为线缆管理、电气配线领域打造的响应式网站模板,采用PbootCMS内核开发,可快速搭建企业级产品展示平台,数据实时同步管理。查看源码 -
自适应黑色简繁双语轴承齿轮机械设备制造网站模板该模板为轴承齿轮机械制造企业提供一体化网站建设方案,着重解决行业特有的多语言展示、移动端适配和高效率内容管理需求,帮助企业精准展示产品特性与工艺流程查看源码 -
(自适应)互联网建站网络公司个人工作室网站模板基于PbootCMS内核开发,围绕「技术方案展示」「成功案例库」「服务流程说明」三大模块构建,支持PC与移动端数据实时同步。附带包含客户评价、行业解决方案的完整测试数据包查看源码 -
(自适应)HTML5响应式双语绿色物流运输快递货运pbootcms源码本款基于PbootCMS开发的网站模板为物流运输、快递货运行业设计,采用HTML5技术构建,支持简繁字体切换。模板设计充分考虑了货运物流行业的特点,可专业展示运输服务、物流网络和业务优势等内容。查看源码 -
(自适应)绿色新闻生活百科资讯文章博客类网站pbootcms模板源码本模板基于PbootCMS开发,为生活百科、资讯文章和博客类网站设计。采用清新绿色系风格,提供舒适的阅读体验,同时适配PC和移动设备。适用于生活技巧分享、健康知识传播查看源码 -
(自适应)刷卡pos机数据移动支付设备电子科技pbootcms模板下载本模板为POS机设备制造商、移动支付终端服务商和科技企业设计,基于PbootCMS系统开发,提供完整的在线展示平台解决方案,满足支付设备行业特有的展示需求。查看源码
| 分享笔记 (共有 篇笔记) |
