ANF到DNT完美转移
ANF到DNT完美转移
一、安装dnt
二、官方转换工具。转用户,板块,主题,帖子。(板块转移有问题,在后台重新调整下板块顺序和所属即可。)
三、到数据库设计dnt_users表,把password改成varchar 64.
四、用下面语句重新转移密码。
CODE:
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:
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:
RewriteRule ^/([0-9]+)/ShowPost/.aspx$ /showtopic-$1.aspx
RewriteRule ^/([0-9]+)/ShowForum/.aspx$ /showforum-$1.aspx
这才叫完美嘛!
ANF到DNT完美转移相关推荐
- 转移到ios下载安卓_转移到iOS下载-转移到iOS安装器(安卓转移苹果软件)下载v2.10.0 安卓版-当易网...
转移到iOS安装器(安卓转移苹果软件)是一款非常好用的手机换机软件,我们经常在换手机时都会烦恼,怎么把另一个手机的数据转移到新手机,特别是安卓手机换苹果手机的用户,今天为大家带来的这款软件可以完美的解 ...
- zblog完美转换php,数据库字段替换法完美实现Pjblog3转Zblog
博客程序由Pjblog3转换为ZblogPHP半个多月了,总该记录点什么,比如为什么转?转成什么?怎么转?今天就说说怎么转. 很久很久很久--以前,网上曾有人提供过上Pjblog2到Z-blog1.X ...
- 人工智能项目的六投三不投
https://www.toutiao.com/a6656762030592098820/ 2019-02-11 23:16:28 来源:知乎,非典型博士 作者:钱雨(第十区VRAI基金和清研新一代人 ...
- mfs分布式存储+master端高可用
2019独角兽企业重金招聘Python工程师标准>>> MFS 文件系统结构: 包含 4 种角色: 管理服务器 managing server (master) 元数据日志服务器 M ...
- Visual C++ 新增功能(2003 - 2015)
本页面包括从 Visual Studio 2003 到 Visual Studio 2015 的所有 Visual C++ 版本的"新增功能"页. 提供这些信息的目的是方便用户从早 ...
- 计算机固态硬盘怎么当u盘使用方法,固态硬盘也能当U盘用?这样做几秒钟就能传一部电影...
原标题:固态硬盘也能当U盘用?这样做几秒钟就能传一部电影 对于很多上班族来说,一个好用的U盘几乎是必备的东西.尤其是出差比较频繁的朋友,有时候带着电脑非常疲累也不方便,轻巧便携的U盘就成为了特别实用的 ...
- 3. 类指针与智能指针
3. 类指针与智能指针 本篇主要解答以下问题: 类的对象与类指针的区别 为什么要用智能指针 unique_ptr 和 shared_ptr 3.1 类对象与类指针 实例化一个类的时候,有两种方式,一是 ...
- iPAD vs iPhone:食指向拇指的挑战
虽然iPAD至今没有在大陆市场官方上市,在美国却因为大陆采购量太大引起了争议,甚至有传闻Apple专卖店拒绝卖iPAD给华人,是否真假老杳不清楚,不久前托一位美国的同学带一台3G的iPAD回来没有现货 ...
- 【小强推歌】---邓丽君演绎古词专集《淡淡幽情》
碟名:淡淡幽情 出品:Polydor 编号:817 121-2(R) RXCD⒉ --------- 简 介: <淡淡幽情>于1983年面世至今已近二十年,岁月的滚滚红尘未能遮掩她美丽的光 ...
最新文章
- 力扣(LeetCode)刷题,简单题(第8期)
- 最新成果被AAAI-20收录,腾讯安全科恩实验室加快AI产业化应用
- 疯狂android讲义(kotlin版) 源码 pan_每周一书《疯狂Python讲义》分享
- [20160307]绑定变量的分配长度3.txt
- 父与子的编程之旅:与小卡特一起学Python.pdf
- UA MATH571A 一元线性回归III 方差分析与相关性分析
- [Erlang 0014]Erlang垃圾回收机制
- 关于Python的编译
- java学习笔记(七)数据库链接字符
- 将页面中表格数据导出excel格式的文件(vue)
- windows下配置opencv
- 2020 年七大 AI 编程语言大盘点
- 森林病虫防治系统 (十)
- 训练日志 2019.4.7
- 客户组网服务案列_山西seo关键词排名优化案列
- oracle 对象定义被修改,oracle 数据对象_xspaces
- 跨系统服务器data,oracle 新增pdb环境,并通过database link实现跨服务器在线克隆
- [stm32] 利用uc-gui封装画图和画线函数移植51上的模拟动画
- Java中将将JPG图片转GIF动画和将GIF转JPG图片
- 腾讯微博android版本,腾讯微博
热门文章
- 山东涛雒镇万亩水稻 国稻种芯·中国水稻节:日照迎来收割季
- 将下列计算机中文翻译成英文,急...将计算机类英文翻译成中文
- 11,基于JESD204 IP核的设计实现方法
- 云风Skynet——skynet非官方网站
- 全球与中国生物气溶胶监测仪市场深度研究分析报告
- css-07--1. HTML5 的新特性2. CSS 3 的新特性
- 深入分析JavaWeb 44 -- Struts2开发核心之动作类Action
- python ip反查询_python 脚本之 IP地址探测
- 中国汽车检测行业投资现状及发展战略规划报告2022-2028年版
- 你为什么不愿意慢慢变富