发布于 2016-05-31 04:28:51 | 82 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的精品教程,程序狗速度看过来!

Discuz!社区论坛系统

Crossday Discuz! Board(简称 Discuz!)是北京康盛新创科技有限责任公司推出的一套通用的社区论坛软件系统。自2001年6月面世以来,Discuz!已拥有13年以上的应用历史和200多万网站用户案例,是全球成熟度最高、覆盖率最大的论坛软件系统之一。


最近我负责了从a.com,b.com,c.com同步可以登录到bbs.comDISCUZ论坛。记录下
\\create by ahuinan 2009-6-22
\\up by ahuian 2009-6-23
\\up by ahuinan 2009-6-24

1、将common项目中的md5函数代码更改为:

return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower().Substring(8, 16); 

实现主站与论坛统一加密方式。

2、将common项目中的Encode和Decode改成直接返回。

3、ASP若采用session,则之前先判断是否有cookie。而主站的统一退出只需要添加一个清空cookie操作,代码可以如下:

Response.Cookies("dnt")("userid") = rs("uid") 
Response.Cookies("dnt")("password") = DESCode 
Response.Cookies("dnt")("tpp") = rs("tpp") 
Response.Cookies("dnt")("ppp") = rs("ppp") 
Response.Cookies("dnt")("pmsound") = rs("pmsound") 
Response.Cookies("dnt")("invisible") = rs("invisible") 
Response.Cookies("dnt")("referer") = "index.aspx" 
Response.Cookies("dnt")("sigstatus") = rs("sigstatus") 
Response.Cookies("dnt")("expires") = 0 
Response.Cookies("dnt").Domain = ".xxxx.com" //修改为你的域名,注意前面带.(点) 
Response.Cookies("dnt").Secure = False 

4、在dnt论坛中的aspx>>1文件夹下面先建立一个login_in.aspx处理所有的同步登陆请求。实现多域名下同步登陆,比如可以实现www.a.com和www.b.com 下的登录问题。

5、管理员部分由于修改了加解密部门,所以需要重写admin/index.aspx.cs文件,注释掉:


//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())) 

更改为:

if (Context.Request.Cookies["dntadmin"] == null || Context.Request.Cookies["dntadmin"]["key"] == null) 

同步登陆代码文件有个文件名是index.aspx直接拷贝过去OK,拷贝到admin/index.aspx里面

6、以下内容是为了修复IE6下COOKIE丢失的问题,因为IE6不支持P3P协议,可以再每个程序网站添加该协议,但比较麻烦,现在直接在IIS添加HTTP头。

自定义HTTP头名为:P3P
自定义HTTP头值为:CP=CAO PSA OUR
7、可能用到的整合文件:

<%@ Page Language="C#" %> 
<%@ Import Namespace="Discuz.Forum" %> 
<%@ Import Namespace="Discuz.Common" %> 
<script runat="server"> 
protected void Page_Load(object sender, EventArgs e) 
{ 
if (Request.QueryString["userName"] != null && Request.QueryString["passWord"] != null) 
{ 
string userName = Request.QueryString["userName"].ToString().Replace("'", "''"); 
string passWord = Request.QueryString["passWord"].ToString().Replace("'", "''"); 
int uid = Discuz.Forum.Users.CheckPassword(userName, passWord, false); 

if (uid != -1) 
{ 
LoginLogs.DeleteLoginLog(Discuz.Common.DNTRequest.GetIP()); 
UserCredits.UpdateUserCredits(uid); 
ForumUtils.WriteUserCookie(uid, Discuz.Common.Utils.StrToInt(DNTRequest.GetString("expires"), 500),userName, DNTRequest.GetInt("templateid", 0), DNTRequest.GetInt("loginmode", -1)); 
Users.UpdateUserLastvisit(uid, Discuz.Common.DNTRequest.GetIP()); 
} 
} 
} 
</script>


最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务