总算搞定了DNT的不同站点数据同步,
我的程序中使用的是DNT官方的一个叫DiscuzTookit的示例代码中的类库
关键是域名那点儿如果是 http://www.xxx.com/ 和 bbs.xxx.com 做整合 那么域名那块儿就直接写
.xxx.com ,因为DNT的数据同步是让 数据以GET 方式提交到 另一个网站的一个页面,
从而在另一个网站下实现相应的操作
2010年5月23日17:00:04
DNT 论坛整合中文用户名问题
DNT使用的是UTF8编码而网站使用的是GB2312。。
这样在注册的时候从查询字符串中取出的中文用户名将会出现乱码。。
在网上找了个UTF8>GB2312的代码~转换不了
后来想到QueryString中有个UID值 这个值是用户的论坛用户ID
建议在DNT的源码上做点儿修改。。禁止中文注册。。因为不少站点都有一个以用户名
作为用户文件夹名或者泛解析如果用中文就麻烦了。
于是修改注册代码
先利用API根据ID从论坛获取用户对象
再使用取到的DNT用户信息添加到网站数据库
2010年5月23日21:25:51
IE8下论坛cookie不过期。。
不知道是不是上面的domain问题。。
但是用Google浏览器可以成功同步
代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using QS.Model;
using Discuz.Toolkit;
using System.Text;
public partial class logincheck : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//限定只能为本服务器上的请求
//注册 Url: {http://192.168.0.200/checkUser.aspx?action=register&password=61a93c18e1b29162e6026b7c8aac4934&time=1274518035&uid=8&user_name=mafeifei222&sig=44435a44cff91f3eec53b7cff0519b8c}
// 登录 Query: "?action=login&time=1274520157&uid=6&user_name=mahuihui1&sig=0833f672206b42a34263cd2c60a8bbe9"
// 退出 "/checkUser.aspx?action=logout&time=1274520326&uid=-1&sig=c773d340492ca1b0409ff9231b5fef31"
#region 编码转换
#endregion
try
{
string action = Request.QueryString["action"];
if (!string.IsNullOrEmpty(action))
{
string user_name = Request.QueryString["user_name"];
string lowerMd5Pwd = Request.QueryString["password"];
string sig = Request.QueryString["sig"];
DiscuzSession ds = DiscuzSessionHelper.GetSession();
tUser user = new tUser();
int bbsuid = 0;
Discuz.Toolkit.User bbsuser = null;
switch (action)
{
case "register"://注册
bbsuid = int.Parse(Request.QueryString["uid"]);
bbsuser = ds.GetUserInfo(bbsuid);
if (bbsuser != null)
{
user.userName = bbsuser.UserName;
user.Password = bbsuser.Password.ToUpper();
user.BBS_UID = int.Parse(bbsuser.UId.ToString());
user.UserType = QS.Model.UserType.Default;
user.regTime = DateTime.Parse(bbsuser.JoinDate);
user.lastIPaddress = bbsuser.LastIp;
user.lastLoingTime = DateTime.Now;
user = new QS.BLL.tUser().GetModel(new QS.BLL.tUser().Add(user));
if (user != null)
{//网站注销用户
SO.bbsLoin(user);
}
}
break;
case "login"://登录
user = new QS.BLL.tUser().GetModel("bbs_uid=" + Request.QueryString["uid"]);
if (user != null)
{//网站记录用户
System.Web.HttpContext.Current.Session["user"] = user;
System.Web.HttpContext.Current.Session["UserName"] = user.userName;
string ipaddress = HttpContext.Current.Request.UserHostAddress;
if (!string.IsNullOrEmpty(ipaddress))
{
user.lastIPaddress = ipaddress;
}
QS.BLL.tUser bll = new QS.BLL.tUser();
user.lastLoingTime = DateTime.Now;
bll.Update(user);
}
break;
case "logout"://退出
HttpContext.Current.Session["user"] = null;
HttpContext.Current.Session["UserName"] = null;
break;
default:
break;
}
}
else
{
return;
}
}
catch (Discuz.Toolkit.DiscuzException ex)
{
Response.Write(ex.Message);
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using QS.Model;
using Discuz.Toolkit;
using System.Text;
public partial class logincheck : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//限定只能为本服务器上的请求
//注册 Url: {http://192.168.0.200/checkUser.aspx?action=register&password=61a93c18e1b29162e6026b7c8aac4934&time=1274518035&uid=8&user_name=mafeifei222&sig=44435a44cff91f3eec53b7cff0519b8c}
// 登录 Query: "?action=login&time=1274520157&uid=6&user_name=mahuihui1&sig=0833f672206b42a34263cd2c60a8bbe9"
// 退出 "/checkUser.aspx?action=logout&time=1274520326&uid=-1&sig=c773d340492ca1b0409ff9231b5fef31"
#region 编码转换
#endregion
try
{
string action = Request.QueryString["action"];
if (!string.IsNullOrEmpty(action))
{
string user_name = Request.QueryString["user_name"];
string lowerMd5Pwd = Request.QueryString["password"];
string sig = Request.QueryString["sig"];
DiscuzSession ds = DiscuzSessionHelper.GetSession();
tUser user = new tUser();
int bbsuid = 0;
Discuz.Toolkit.User bbsuser = null;
switch (action)
{
case "register"://注册
bbsuid = int.Parse(Request.QueryString["uid"]);
bbsuser = ds.GetUserInfo(bbsuid);
if (bbsuser != null)
{
user.userName = bbsuser.UserName;
user.Password = bbsuser.Password.ToUpper();
user.BBS_UID = int.Parse(bbsuser.UId.ToString());
user.UserType = QS.Model.UserType.Default;
user.regTime = DateTime.Parse(bbsuser.JoinDate);
user.lastIPaddress = bbsuser.LastIp;
user.lastLoingTime = DateTime.Now;
user = new QS.BLL.tUser().GetModel(new QS.BLL.tUser().Add(user));
if (user != null)
{//网站注销用户
SO.bbsLoin(user);
}
}
break;
case "login"://登录
user = new QS.BLL.tUser().GetModel("bbs_uid=" + Request.QueryString["uid"]);
if (user != null)
{//网站记录用户
System.Web.HttpContext.Current.Session["user"] = user;
System.Web.HttpContext.Current.Session["UserName"] = user.userName;
string ipaddress = HttpContext.Current.Request.UserHostAddress;
if (!string.IsNullOrEmpty(ipaddress))
{
user.lastIPaddress = ipaddress;
}
QS.BLL.tUser bll = new QS.BLL.tUser();
user.lastLoingTime = DateTime.Now;
bll.Update(user);
}
break;
case "logout"://退出
HttpContext.Current.Session["user"] = null;
HttpContext.Current.Session["UserName"] = null;
break;
default:
break;
}
}
else
{
return;
}
}
catch (Discuz.Toolkit.DiscuzException ex)
{
Response.Write(ex.Message);
}
}
}