您现在的位置是:首页 > 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框架也算是比较流行的社区论坛框架,discuz的基础架构采用世界上很流行的 web 编程组合 PHP + MySQL 实现,是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方案。
Discuz和jQuery冲突怎么办
Common.js是官方自带的,我没改过它,所以不可能出错,所以问题就应该是两者冲突了。导致的结果我也发现了,前台的DIY功能不能用了。
discuz目录作用说明
uc.php UCenter 通信文件|-- /api/addons 应用中心|-- /api/connect 腾讯互联|-- /api/google Google 引擎接口处理|-- /api/javascript 数据和广告的 JS调用
freebsd+apache+mysql+php+phpmyadmin+zend+discuz傻瓜式教程
刚接触linux是今年4月的事情,装过不少linux发行版本,最终还是选择了unix中的freebsd,喜欢它的简洁。不过我也是初学者,将这10多天学freebsd的经验总结给大家分享
相关源码
-
(自适应响应式)HTML5电脑手机电子数码产品配件pbootcms模板下载本模板为电脑配件、手机配件及数码周边产品企业设计,基于PbootCMS内核开发。采用现代化响应式布局,适配各类移动设备,能够专业展示各类电子产品配件参数、应用场景和技术特点。模板内置多种产品展示模块,满足不同类型配件企业的展示需求。查看源码 -
(PC+WAP)历史复古古典古籍文章资讯类pbootcms模板下载本模板基于PbootCMS系统开发,为古籍研究、历史文献类网站设计,特别适合展示古典书籍、历史档案等文化内容。采用复古风格设计,同时具备现代化响应式布局,确保在PC和移动设备上都能呈现优雅的阅读体验。查看源码 -
HTML5响应式健身俱乐部pbootcms网站模板下载为健身俱乐部、瑜伽中心及运动场馆设计的响应式网站模板,采用PbootCMS内核开发,支持一键替换图文适配健身器材销售、瑜伽工作室等多类型运动健康产业。查看源码 -
深蓝色风景摄影机构网站(自适应多端)pbootcms模板该模板基于PbootCMS内核开发,专为风景摄影机构、户外摄影企业设计,采用深蓝色主题传递专业与艺术感,全栈响应式架构确保PC、平板、手机端无缝适配PHP程序结合轻量级SQLite数据库也可以更换MySQL数据库查看源码 -
响应式茶叶茶道pbootcms网站模板源码(自适应手机端)棕色复古茶具主题的响应式网站模板,为茶叶茶道企业设计,同时支持古玩字画、艺术文化等行业的快速适配,通过替换文字图片即可转型为其他行业官网,大幅降低开发成本。查看源码 -
(自适应)游泳馆泳池水处理器设备pbootcms网站模板免费下载专注服务于泳池水处理设备制造商、泳池系统工程商等企业用户。模板预设设备分类体系、技术参数展示模块和解决方案呈现页面,满足行业特有展示需求。查看源码
| 分享笔记 (共有 篇笔记) |
