换一个思路整合discuz nt 2.0 的登陆注册和退出
2008-07-21 16:29
47 查看
C:/Inetpub/wwwroot/BBS2/dnt2_n2_src/Source Code/Discuz.Web/aspx/1/login.aspx
这个文件是discuz的登陆页面,但是我们如何实现在另外一个网站(另外一个虚拟目录)登陆呢?
我们自需要在我们的网站中新建一个页面如下
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<meta http-equiv=/"Content-Type/" content=/"text/html; charset=utf-8/" />
<title>无标题页</title>
<script type="text/javascript">
function logout()
{
ContaimiframeLogout.innerHTML= ContaimiframeLogout.innerHTML+ '<iframe id="ifr1" src="http://192.168.1.13:8000/BBS/logout.aspx?userkey=763121ce" ></iframe>';
}
</script>
</head>
<body>
<form id="form1" runat="server">
<input type="button" id="Button1" onclick="logout()" value="退出" />
<div id="ContaimiframeLogout"></div>
<iframe id="Iframe1" src="http://192.168.1.13:8000/BBS/register2.aspx?agree=yes" style="width:600px;height:400px" ></iframe>
<iframe id="ifr2" src="http://192.168.1.13:8000/BBS/login.aspx?1=1" style="width:600px;height:400px" ></iframe>
</form>
</body>
</html> http://192.168.1.13:8000/BBS/login2.aspx?1=1这个地址就是discuz的登陆叶面,你只要把login.aspx的头部和尾部去掉就好了 然后通过显示和隐藏iframe来实现登陆,对了还有一个和重要的一点,就是login.aspx叶面会在登陆成功后自动跳转,所以你需要把
login.aspx中的下面这句话去掉
templateBuilder.Append("" + meta.ToString() + "/r/n");
注册也是同样的道理,靠如此简单,
下面说一个更简单的如何实现退出看到上面绿色的代码ContaimiframeLogout了吗?
自要点退出按钮的时候调用logout()就可以了就是调用 http://192.168.1.13:8000/BBS/logout.aspx?userkey=763121ce 靠才发现原来还有个userkey,其实userkey就是你密码password.Substring(4, 8).Trim();位,只要你取一下你的cookie里面密码的4-8位就行了
对了discuz nt cookie里面的密码是经过md5和des加密的家这么多米干吗呀?真是的,下面我们就把des加密去掉,下面粉红色的说明就是如何去除des加密的,去掉了des加密,你只要取一下密码的password.Substring(4, 8).Trim();位,就可以userkey=password.Substring(4, 8).Trim(),就搞定了
这个文件是discuz的登陆页面,但是我们如何实现在另外一个网站(另外一个虚拟目录)登陆呢?
我们自需要在我们的网站中新建一个页面如下
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<meta http-equiv=/"Content-Type/" content=/"text/html; charset=utf-8/" />
<title>无标题页</title>
<script type="text/javascript">
function logout()
{
ContaimiframeLogout.innerHTML= ContaimiframeLogout.innerHTML+ '<iframe id="ifr1" src="http://192.168.1.13:8000/BBS/logout.aspx?userkey=763121ce" ></iframe>';
}
</script>
</head>
<body>
<form id="form1" runat="server">
<input type="button" id="Button1" onclick="logout()" value="退出" />
<div id="ContaimiframeLogout"></div>
<iframe id="Iframe1" src="http://192.168.1.13:8000/BBS/register2.aspx?agree=yes" style="width:600px;height:400px" ></iframe>
<iframe id="ifr2" src="http://192.168.1.13:8000/BBS/login.aspx?1=1" style="width:600px;height:400px" ></iframe>
</form>
</body>
</html> http://192.168.1.13:8000/BBS/login2.aspx?1=1这个地址就是discuz的登陆叶面,你只要把login.aspx的头部和尾部去掉就好了 然后通过显示和隐藏iframe来实现登陆,对了还有一个和重要的一点,就是login.aspx叶面会在登陆成功后自动跳转,所以你需要把
login.aspx中的下面这句话去掉
templateBuilder.Append("" + meta.ToString() + "/r/n");
注册也是同样的道理,靠如此简单,
下面说一个更简单的如何实现退出看到上面绿色的代码ContaimiframeLogout了吗?
自要点退出按钮的时候调用logout()就可以了就是调用 http://192.168.1.13:8000/BBS/logout.aspx?userkey=763121ce 靠才发现原来还有个userkey,其实userkey就是你密码password.Substring(4, 8).Trim();位,只要你取一下你的cookie里面密码的4-8位就行了
对了discuz nt cookie里面的密码是经过md5和des加密的家这么多米干吗呀?真是的,下面我们就把des加密去掉,下面粉红色的说明就是如何去除des加密的,去掉了des加密,你只要取一下密码的password.Substring(4, 8).Trim();位,就可以userkey=password.Substring(4, 8).Trim(),就搞定了
分享nt discuz 结合经验,并手把手提供整合代码 虽然nt discuz 开源,IT世界网论坛也使用NT discuz 论坛,但对于一些新站长可能对整合论坛还是有一些无从下手,特别是对于那些不懂asp 又特别喜欢建站的 站长们。现在偶分享一下偶整合论坛的过程。 偶思路:在注册的时候分别同时向主站的会员表,和论坛的会员表写入数据。 方法一、(不推荐) 相关代码提供如下: 复制内容到剪贴板 代码: sqlbbs="select * from dnt_users" set rsbbs=server.CreateObject("adodb.recordset") rsbbs.Open sqlbbs,conn,1,3 rsbbs.AddNew rsbbs("username")=uid rsbbs("nickname")=nickname rsbbs("password")=MD5(passwd) rsbbs("groupid")=10 rsbbs("email")=email rsbbs("regip")=regip rsbbs("joindate")=now() rsbbs.Update rsbbs.Close set rsbbs=nothing sqlbbs="select * from dnt_userfields" set rsbbs=server.CreateObject("adodb.recordset") rsbbs.Open sqlbbs,conn,1,3 rsbbs.AddNew rsbbs.Update rsbbs.Close set rsbbs=nothing 加入如下代码就是注册的时候分别向会员表:dnt_users 和表dnt_userfields写入数据, 但是有个缺点: 1、要把表dnt_userfields 的ID值设置为主键 才可以, 2、新注册会员后,在论坛没有同时更新“ 欢迎新会员×××”,需加如下更新代码即可:sql="update [dnt_statistics] set totalusers=totalusers+1,lastusername='"&新会员名&"',lastuserid='"& amp;新会员id&"'"set rs=conn.execute(sql) 方法二: 思路:asp页面,注册ntdiscuz论坛,实际上要向论坛写入三个表,分别是:dnt_users dnt_userfields dnt_userfields,共用Cookies,实现注册后即自动登陆主站和论坛;注:Discuz!NT的Cookie是用DES加密的,所以要删除DES加密过程。 1、需添加如下代码: 复制内容到剪贴板 代码: sql="insert into [dnt_users] (username,nickname,password,gender,adminid,groupid,groupexpiry,extgroupids,regip,joindate,lastip,lastvisit,lastactivity,lastpost,lastpostid,lastposttitle,posts,digestposts,oltime,pageviews,credits,extcredits1,extcredits2,extcredits3,extcredits4,extcredits5,extcredits6,extcredits7,extcredits8,avatarshowid,email,bday,sigstatus,tpp,ppp,templateid,pmsound,showemail,newsletter,invisible,newpm,newpmcount,accessmasks,onlinestate) values ('"&uid&"','"&nickname&"','"&MD5(Passwd)&"',0,0,10,0,' ','"®ip&"','"&now()&"','"®ip&"','"&now()&"','"&now()&"','"&now()&"',0,' ',0,0,0,0,0,'0.00','0.00','0.00','0.00','0.00','0.00','0.00','0.00',0,'"&email&"',' ',1,0,0,0,1,1,1,0,1,1,0,1)" set rs=conn.execute(sql) sql="select uid from [dnt_users] where username='"&uid&"'" set rs=conn.execute(sql) dntuid=rs(0) sql="insert into [dnt_userfields] (uid,avatar,avatarwidth,avatarheight,authtime,authflag) values ('"&dntuid&"','avatars/common/0.gif',0,0,'"&now()&"',0)" set rs=conn.execute(sql) sql="update [dnt_statistics] set totalusers=totalusers+1,lastusername='"&uid&"',lastuserid='"&dntuid&"'" set rs=conn.execute(sql) 2、去掉DES加密: 第一步,先去 DNT官方下载源码 http://www.discuznt.com/opensource.html 找到适合自己的版本。 我下载 SQLServer版 (.net Framework2.0) 第二步,按照dnt_sql_n2_1_src.zip里的帮助,用VS打开这个项目 第三步,打开 /Forum/ForumUtils.cs 大约350行开始 第一处:找到 public static string GetCookiePassword(string key) { return DES.Decode(GetCookie("password"), key).Trim(); }修改为 public static string GetCookiePassword(string key) { return GetCookie("password").Trim(); } ----------------------------------------------------------------------------------------- 第二处:找到 public static string GetCookiePassword(string password, string key) { return DES.Decode(password, key); }修改为 public static string GetCookiePassword(string password, string key) { return password; } ----------------------------------------------------------------------------------------- 第三处:找到 public static string SetCookiePassword(string password, string key) { // if (password.Length < 32) // { // password = password.PadRight(32); // } return DES.Encode(password, key); }修改为 public static string SetCookiePassword(string password, string key) { // if (password.Length < 32) // { // password = password.PadRight(32); // } return password; } 第四步:重写编译就可以拉特别注意:Discuz!NT官方发布的源码版(如:dnt_sql_n2_1_src.zip)和安装版(如:dnt_sql_n2_1.zip)版本不一致(可以去官方下载对比bin文件即可知道),所以不能将用源码版编译的DLL给安装版用,必须都用源码版的。 注:特别感谢“liuliu ” 此方法由liuliu提供 3、去论坛后台设置一下共用域就OK: 方法:登陆论坛------系统设置------Discuz!NT选项------其他设置------身份验证Cookie域格式:.你的域名;例:.585.com.cn)一切OK,大功告成,就是这么简单。
相关文章推荐
- phpcms和discuz整合论坛实现同步注册登陆退出论坛,所以问题都已经测试了,全部OK!
- 求一个论坛的在线人数,假设有一个论坛,其注册ID有两亿个,每个ID从登陆到退出会向一个日志文件中记下登陆时间和退出时间,要求写一个算法统计一天中论坛的用户在线分布,取样粒度为秒。
- 求一个论坛的在线人数,假设有一个论坛,其注册ID有两亿个,每个ID从登陆到退出会向一个日志文件中记下登陆时间和退出时间,要求写一个算法统计一天中论坛的用户在线分布,取样粒度为秒。
- 求一个论坛的在线人数,假设有一个论坛,其注册ID有两亿个,每个ID从登陆到退出会向一个日志文件中记下登陆时间和退出时间,要求写一个算法统计一天中论坛的用户在线分布,取样粒度为秒。
- Yii框架应用程序整合Ucenter实现同步注册、登录和退出等
- 如何做一个登陆注册页面
- 【SD2.0大会】Adobe: 把设计师和开发师整合成一个整体
- struts2入门-第一个例子==》第一个struts2实例——HelloWorld==》Struts2.0搭建和简单实例==>写一个Steuts2的经典入门案例,做了一个登陆程序作为入门例子
- Spring3整合Struts2+Hibernate 实现注册、数据库验证登陆
- Struts 2.0 整合 Hibernate 3.2 开发注册登录系统
- 完美整合phpcms v9和discuz X3.1实现同步登陆退出论坛免激活
- 用java实现一个简单的单用户登陆功能的思路
- 设置UCHome注册登陆退出的跳转页自定义
- 一个简单的登陆注册系统
- Yii框架应用程序整合Ucenter实现同步注册、登录和退出等
- 设置UCHome注册登陆退出的跳转页自定义
- java web程序 上机考试做一个登陆注册程序
- destoon跟dz的会员怎么整合,实现同步登陆退出
- 使用java-swing做出一个稍微漂亮一点的登陆注册页面
- 一个完整的Nodejs项目 完成连接数据库(MySQL),登陆、注册功能 session的使用 和发送邮件