写在前面:
我这个人不太会也东东,这个是帮别人换转时碰到的.也没有什么好说的
一般我们换转数据是就近原理(能用最近的先用最近的).因为种种原因,官方没有发布VBB到到5.0的升级程序.所以我们要走的路线一般是从vbb到DZ4.1再到DZ5.0
这里有一个问题.由于vbb论坛用户密码加密方式为非标准md5加密,转换完就要用到官方提供的logging.php.但目前只有DZ4.1的logging.php,可是DZ5.0和Z4.1是不能通用logging.php的.所以我们就要自己改了.
在83行可以找到:- $query = $db->query("SELECT m.uid AS discuz_uid, m.username AS discuz_user, m.password AS discuz_pw, m.secques AS discuz_secques,
复制代码
在它上面加上- ///VBB转换专用
- $query = $db->query("SELECT m.uid AS discuz_uid, m.username AS discuz_user, m.password AS discuz_pw, m.secques AS discuz_secques,
- m.adminid, m.groupid, m.styleid AS styleidmem, m.lastvisit, m.lastpost, u.allowinvisible,
- vbb.userid AS vbbuserid,vbb.oldpw AS vbboldpw,vbb.salt AS vbbsalt
- FROM {$tablepre}members m LEFT JOIN {$tablepre}usergroups u USING (groupid)
- LEFT JOIN {$tablepre}member_vbbinfo vbb ON vbb.userid=m.uid
- WHERE m.$field='$username'");
- //////////////////////
- /*
复制代码
下来4行.我们可以找到- WHERE m.$field='$username'");
复制代码
在下面加上
下来2行,找到:- if($member['discuz_uid'] && $member['discuz_pw'] == $md5_password) {
复制代码
改成
- if($member['discuz_uid'] && ($member['discuz_pw'] == $md5_password | $member['vbboldpw'] == md5($md5_password.$member['vbbsalt']))) {
复制代码
再下来4行,找到
在下面加上- if ($vbbsalt) {
- //vbb转换专用
- $db->query("UPDATE `{$tablepre}members` SET `password`='$md5_password' WHERE `uid`='$discuz_uid' LIMIT 1;");
- $discuz_pw = $member['discuz_pw'] = $md5_password;
- $db->query("DELETE FROM `{$tablepre}member_vbbinfo` WHERE `userid`='$discuz_uid' LIMIT 1;");
- }
复制代码
收工,搞定.
以上代码在VBB3.0到DZ5.0通过
手握手用户转换演示:
转换前:http://club.isred.com/vbb/
转换后:http://club.isred.com/
PS:附上已改好的文件logging.php
外PS: 唉~我上传longging.php时,显示:不支持这类型,请返回!.一返回,什么都没有了.再写了一次.唉~~~ |