您现在的位置是:首页 > cms教程 > discuz教程discuz教程
打通Discuz!NT类VS2005代码实例
元骞振2025-07-02 15:15:24discuz教程已有5人查阅
导读本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!NT类VS2005代码实例信息内容原创度和真实性等负责。如内容侵犯您的版权或其他权益,请留言并加以说明。站长审查之后若情况属实会及时为您删除。同时遵循 CC 4.0 BY-SA 版权协议,尊重和保护作者的劳动成果,转载请标明出处链接和本声明内容。本文作者:元骞振» https://www.ebingou.cn/dmh/16115.html
很赞哦! (0)
暂无内容 |
暂无内容 |
相关文章
- ucenter php整合discuz用户的方法示例
- Discuz的NT2.0系统登录整合
- Discuz!NT控件左侧导航控件分析
- Discuz!NT2.0没有发现事务还安全吗?
- Discuz!NT安装报错的解决方法
- Discuz!NT中远程附件功能实现方法,FTP协议
- .net mvc通过ucenter和discuz的整合nopcommerce ucenter插件
- Discuz x3 UCenter实现同步登陆的方法
- discuz!nt投票功能写法实例
- Discuz!NT控件剖析ColorPicker(颜色拾取) 和Calendar(日历)开发
- discuz的NT3.5论坛整合.net网站用户登录退出的方法
- Discuz!NT生成模板执行方式
暂无内容 |
暂无内容 |
随机图文
discuz!nt投票功能写法实例
可能要写一个投票系统,把discuz!net里面的代码放到这里来参考参考,感觉它的投票功能做的有点简单,数据库里面相关的就两个主从表,不过想想也可以理解discuz uc_server登录配置教程
新运行uc_server环境,先配置好ucenter链接-----这部很重要,我从新环境中安装下载的discuz代码,这部没配置,密码又不知道,怎么更改调试,都不起作用,在框架中Discuz的NT在线用户功能介绍
在上文(Discuz!NT URL地址重写) 中, 聊到了“在线用户”功能,因为当时介绍的重点不是“在线”那一块,所以没做深入介绍。这就为今天这篇文章埋下了“伏笔”。Discuz目录结构说明
/source/class/task站点任务内置包task_avatar.php头像类任务task_blog.php发表日志任务task_connect_bind.phpQQ 帐号绑定任务
留言与评论 (共有 0 条评论) |