ANF到DNT完美转移

下面列步骤:
一、安装dnt
二、官方转换工具。转用户,板块,主题,帖子。(板块转移有问题,在后台重新调整下板块顺序和所属即可。)
三、到数据库设计dnt_users表,把password改成varchar 64.
四、用下面语句重新转移密码。

[复制到剪贴板]

CODE:

UPDATE dnt_users
    SET dnt_users.password=forums_Users.Password
    FROM dnt_users, forums_users
    WHERE  dnt_users.uid = forums_users.Userid

五、设计dnt_users表,增加salt列,设置成varchar 20即可。
六、用下列语句转移salt

[复制到剪贴板]

CODE:

UPDATE dnt_users
    SET dnt_users.salt=forums_users.Salt
    FROM dnt_users, forums_users
    WHERE  dnt_users.uid = forums_users.userid

七、用vs2005打开dnt项目。打开Discuz_Forum/UserFactory.cs
搜索CheckDvBbsPasswordAndSecques和CheckDvBbsPassword两个函数,选择这2个函数删除,替换成如下函数。

[复制到剪贴板]

CODE:

/// <summary>
        /// 检测DVBBS兼容模式的密码 //by bagheera 这里通过改动dvbbs的代码实现anf兼容,后台设置成兼容dvbbs即可。
  /// </summary>
  /// <param name="username">用户名</param>
  /// <param name="password">密码</param>
  /// <param name="questionid">问题id</param>
  /// <param name="answer">答案</param>
  /// <returns>如果正确则返回用户id, 否则返回-1</returns>
  public static int CheckDvBbsPasswordAndSecques(string username, string password, int questionid, string answer)
  {
  SqlParameter[] prams = {
            Database.MakeInParam("@username",SqlDbType.Char,20,username),
            Database.MakeInParam("@password",SqlDbType.Char,64,password)
          };
  SqlDataReader reader = Database.ExecuteReader(CommandType.Text, "SELECT TOP 1 [uid], [password], [salt],[secques] FROM ["+BaseConfigFactory.GetTablePrefix+"users] WHERE [username]=@username", prams);
  int uid = -1;
  if(reader.Read())
  {
    if (reader["secques"].ToString().Trim() != ForumUtils.GetUserSecques(questionid, answer))
    {
    return -1;
    }
    string pw = reader["password"].ToString().Trim();
                if (pw.Length < 33)  //判断长度来判断是否恢复成32位。
                {
                    if (Utils.MD5(password) == pw)
                    {
                        uid = Utils.StrToInt(reader["uid"].ToString(), -1);
                    }
                }
                else
                {
                    string salt = reader["salt"].ToString().Trim();
                    if (myenc(password, salt) == pw)  //使用下面自己写的anf加密函数,实现判断。
                    {
                        uid = Utils.StrToInt(reader["uid"].ToString(), -1);
                        UpdateUserPassword(uid, password);      //更新密码为32位md5
                    }
    }
  }
  reader.Close();
  return uid;
  }
  /// <summary>
        /// 检测DVBBS兼容模式的密码  //by bagheera 这里通过改动dvbbs的代码实现,后台设置成兼容dvbbs即可。
  /// </summary>
  /// <param name="username">用户名</param>
  /// <param name="password">密码</param>
  /// <returns>如果正确则返回用户id, 否则返回-1</returns>
  public static int CheckDvBbsPassword(string username, string password)
  {

SqlParameter[] prams = {
            Database.MakeInParam("@username",SqlDbType.Char,20,username),
            Database.MakeInParam("@password",SqlDbType.Char,64,password)
          };
  SqlDataReader reader = Database.ExecuteReader(CommandType.Text, "SELECT TOP 1 [uid], [password],[salt] FROM ["+BaseConfigFactory.GetTablePrefix+"users] WHERE [username]=@username", prams);
  int uid = -1;
  if(reader.Read())
  {
    string pw = reader["password"].ToString().Trim();
    if (pw.Length < 33)  //判断长度来判断是否恢复成32位。
    {
    if (Utils.MD5(password) == pw)
    {
      uid = Utils.StrToInt(reader["uid"].ToString(), -1);
    }
    }
    else
    {
                    string salt = reader["salt"].ToString().Trim();
   
                    if ( myenc(password, salt) == pw)  //使用下面自己写的anf加密函数,实现判断。
    {
      uid = Utils.StrToInt(reader["uid"].ToString(), -1);
      UpdateUserPassword(uid, password);      //更新密码为32位md5
    }
    }
  }
  reader.Close();
  return uid;
  }
  ///增加 by bagheera
        ///anf的加密方法
        public static String myenc(string pass, string salt)
        {
            Byte[] clearBytes;
            Byte[] hashedBytes;
            System.Text.Encoding encoding = System.Text.Encoding.Unicode; //这里修改编码。
            clearBytes = encoding.GetBytes(salt.ToLower().Trim() + pass.Trim());
            hashedBytes = ((HashAlgorithm)CryptoConfig.CreateFromName("MD5")).ComputeHash(clearBytes); //可以修改MD5为SHA1
            return BitConverter.ToString(hashedBytes);
        }

八、重新编译生成。替换bin/Discuz.Forum.dll(注意:如果你下载的官方安装包,而不是源码,那么你需要下源码,并拿源码包里的admin目录覆盖安装包的admin,否则登录后台会报错。)

九、登录后台,设置密码模式为兼容DVBBS。即可用原论坛密码进行登录。(转移过程中会把管理员密码替换成anf的密码,无法登录请尝试原论坛密码。)

十、已经完美运行,哦也,编译好的Discuz.Forum.dll稍后提供下载。

谢谢大家支持,呵呵。

加点东西,使之更完美,呵呵~

十一、为了照顾已经被搜索引擎收录的帖子。在IISUrlRewriter.ini里做如下配置

[复制到剪贴板]

CODE:

#by bagheera for ANF
    RewriteRule ^/([0-9]+)/ShowPost/.aspx$  /showtopic-$1.aspx
    RewriteRule ^/([0-9]+)/ShowForum/.aspx$  /showforum-$1.aspx

这才叫完美嘛!

ANF到DNT完美转移相关推荐

  1. 转移到ios下载安卓_转移到iOS下载-转移到iOS安装器(安卓转移苹果软件)下载v2.10.0 安卓版-当易网...

    转移到iOS安装器(安卓转移苹果软件)是一款非常好用的手机换机软件,我们经常在换手机时都会烦恼,怎么把另一个手机的数据转移到新手机,特别是安卓手机换苹果手机的用户,今天为大家带来的这款软件可以完美的解 ...

  2. zblog完美转换php,数据库字段替换法完美实现Pjblog3转Zblog

    博客程序由Pjblog3转换为ZblogPHP半个多月了,总该记录点什么,比如为什么转?转成什么?怎么转?今天就说说怎么转. 很久很久很久--以前,网上曾有人提供过上Pjblog2到Z-blog1.X ...

  3. 人工智能项目的六投三不投

    https://www.toutiao.com/a6656762030592098820/ 2019-02-11 23:16:28 来源:知乎,非典型博士 作者:钱雨(第十区VRAI基金和清研新一代人 ...

  4. mfs分布式存储+master端高可用

    2019独角兽企业重金招聘Python工程师标准>>> MFS 文件系统结构: 包含 4 种角色: 管理服务器 managing server (master) 元数据日志服务器 M ...

  5. Visual C++ 新增功能(2003 - 2015)

    本页面包括从 Visual Studio 2003 到 Visual Studio 2015 的所有 Visual C++ 版本的"新增功能"页. 提供这些信息的目的是方便用户从早 ...

  6. 计算机固态硬盘怎么当u盘使用方法,固态硬盘也能当U盘用?这样做几秒钟就能传一部电影...

    原标题:固态硬盘也能当U盘用?这样做几秒钟就能传一部电影 对于很多上班族来说,一个好用的U盘几乎是必备的东西.尤其是出差比较频繁的朋友,有时候带着电脑非常疲累也不方便,轻巧便携的U盘就成为了特别实用的 ...

  7. 3. 类指针与智能指针

    3. 类指针与智能指针 本篇主要解答以下问题: 类的对象与类指针的区别 为什么要用智能指针 unique_ptr 和 shared_ptr 3.1 类对象与类指针 实例化一个类的时候,有两种方式,一是 ...

  8. iPAD vs iPhone:食指向拇指的挑战

    虽然iPAD至今没有在大陆市场官方上市,在美国却因为大陆采购量太大引起了争议,甚至有传闻Apple专卖店拒绝卖iPAD给华人,是否真假老杳不清楚,不久前托一位美国的同学带一台3G的iPAD回来没有现货 ...

  9. 【小强推歌】---邓丽君演绎古词专集《淡淡幽情》

    碟名:淡淡幽情 出品:Polydor 编号:817 121-2(R) RXCD⒉ --------- 简 介: <淡淡幽情>于1983年面世至今已近二十年,岁月的滚滚红尘未能遮掩她美丽的光 ...

最新文章

  1. 力扣(LeetCode)刷题,简单题(第8期)
  2. 最新成果被AAAI-20收录,腾讯安全科恩实验室加快AI产业化应用
  3. 疯狂android讲义(kotlin版) 源码 pan_每周一书《疯狂Python讲义》分享
  4. [20160307]绑定变量的分配长度3.txt
  5. 父与子的编程之旅:与小卡特一起学Python.pdf
  6. UA MATH571A 一元线性回归III 方差分析与相关性分析
  7. [Erlang 0014]Erlang垃圾回收机制
  8. 关于Python的编译
  9. java学习笔记(七)数据库链接字符
  10. 将页面中表格数据导出excel格式的文件(vue)
  11. windows下配置opencv
  12. 2020 年七大 AI 编程语言大盘点
  13. 森林病虫防治系统 (十)
  14. 训练日志 2019.4.7
  15. 客户组网服务案列_山西seo关键词排名优化案列
  16. oracle 对象定义被修改,oracle 数据对象_xspaces
  17. 跨系统服务器data,oracle 新增pdb环境,并通过database link实现跨服务器在线克隆
  18. [stm32] 利用uc-gui封装画图和画线函数移植51上的模拟动画
  19. Java中将将JPG图片转GIF动画和将GIF转JPG图片
  20. 腾讯微博android版本,腾讯微博

热门文章

  1. 山东涛雒镇万亩水稻 国稻种芯·中国水稻节:日照迎来收割季
  2. 将下列计算机中文翻译成英文,急...将计算机类英文翻译成中文
  3. 11,基于JESD204 IP核的设计实现方法
  4. 云风Skynet——skynet非官方网站
  5. 全球与中国生物气溶胶监测仪市场深度研究分析报告
  6. css-07--1. HTML5 的新特性2. CSS 3 的新特性
  7. 深入分析JavaWeb 44 -- Struts2开发核心之动作类Action
  8. python ip反查询_python 脚本之 IP地址探测
  9. 中国汽车检测行业投资现状及发展战略规划报告2022-2028年版
  10. 你为什么不愿意慢慢变富