DZ 数据迁移问题

DZ 数据迁移问题

By agenge at 2016-06-01
0人收藏 • 3139人看过

你好,林老大。


    请问目前有遇到这种需求吗?从DZ迁移过来,不一定是所有数据,只迁移必要的数据即可,例如部分帖子,用户等。

15 个回复 | 最后更新于 2016-06-15
ivanilla
2016-06-01
#1

一般来说只需这四个数据表:

假设你的论坛数据表前缀是bbs_。

bbs_common_members

bbs_forum_posts

bbs_forum_thread

版块表是哪个我忘了,版块迁移成标签。

由于两者使用的密码加密方式一样,所以可以直接迁移。

agenge
2016-06-01
#2

回复#1 @ivanilla :

加密方式是一样的? DZ的密码表好像没有加盐。。。

ivanilla
2016-06-01
#3

回复#2 @agenge :

有的。

agenge
2016-06-01
#4

回复#3 @ivanilla :

多谢,如果加密方式一样,那迁移相对就简单多了。

lincanbin
2016-06-01
#5

https://www.94cb.com/t/3141#Post13432

这人迁移了,有问题可以找找他。

agenge
2016-06-01
#6

回复#3 @ivanilla :

QQ截图20160601142150.jpg

agenge
2016-06-01
#7

并未看到 加盐字段。。。


agenge
2016-06-01
#8

已在pre_ucenter_members表找到。

ivanilla
2016-06-01
#9

回复#7 @agenge :

哦,不是完全一样,有区别:

DZ的uc_client/control/user.php:

$passwordmd5 = preg_match('/^\w{32}$/', $password) ? $password : md5($password);
if(empty($user)) {
	$status = -1;
} elseif($user['password'] != md5($passwordmd5.$user['salt'])) {
	$status = -2;
} elseif($checkques && $user['secques'] != $_ENV['user']->quescrypt($questionid, $answer)) {
	$status = -3;
} else {
	$status = $user['uid'];
}

他的密码加密方式是先MD5密码一次,然后把结果加上salt再MD5一次。

CF的login.php:

if (!HashEquals($DBUser['Password'], md5($Password . $DBUser['Salt']))) {
	$Error = $Lang['Password_Error'];

CF的register.php:

$NewUserPassword = md5($Password . $NewUserSalt);

他的密码加密方式是密码加上salt MD5一次。

但是因为有人迁移成功,说明还是有办法解决的。

ivanilla
2016-06-01
#10

回复#8 @agenge :

你看我楼上的代码就知道怎样解决加密方式有点差异的问题。

像DZ那样先MD5 密码一次然后加salt再MD5一次就行了。

agenge
2016-06-01
#11

回复#9 @ivanilla :

这就需要改CF的代码才能解决,否则密码会不对。  但是,如果改CF的代码,这为以后的升级埋下一些隐患。

ivanilla
2016-06-01
#12

回复#11 @agenge :

直接找林先生啊。

lincanbin
2016-06-01
#13

回复#10 @ivanilla :

你搞错了,CF和Discuz! 的密码校验方式,是完全一样的。

airoc
2016-06-14
#14

竟然不能用手机复制贴子内容 巨bug 还有自动生成的话题太多 根本不适用 用户会找不到自己喜欢的内容

lincanbin
2016-06-15
#15

回复 #14 @airoc :

不用找,自己手打啊。


登 录


现在注册

QQ  登 录    Weibo  登 录    GitHub  登 录