zoukankan      html  css  js  c++  java
  • DNT论坛整合笔记二

    总算搞定了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);
            }

        }
    }
     
     
  • 相关阅读:
    如何开始DDD(续)
    如何开始DDD
    ThinkNet终于见面了
    [Umbraco] umbraco中如何分页
    ETL 工具下载全集 包括 Informatica Datastage Cognos( 持续更新)
    js时间对比-转化为几天前,几小时前,几分钟前
    原生JS实现返回顶部和滚动锚点
    JSONP原理及简单实现 可做简单插件使用
    CSS3 transition效果 360度旋转 旋转放大 放大 移动
    js获取url的常用方法
  • 原文地址:https://www.cnblogs.com/Qbit/p/1741859.html
Copyright © 2011-2022 走看看