集思学院已经用了很长时间的vbb3.0.3,现在有些功能在我们的服务器已经出问题了,而且不想再跟vbb了,因为数字流域论坛已经转换到phpbb了,为了以后维护方便,决定从vbb3.0.3转换到phpbb 3 rc1。(估计RC2版本就要出来了,BUG已经很少了)
因为之前已经写了一个webwiz到phpbb的转换程序,所以再写vbb3到phpbb3的转换程序,比上次要轻松不少,但webwiz的设计思想就是来源于phpbb,所以很多库结构都非常像,而vbb的结构和phpbb有较大差异,在调试过程中还是耗费了大量的时间,回头来看,大约耗费了有一个礼拜的时间。感觉我都能提供有偿论坛转换服务了,哈哈。
转换过程:
首先要进行数据库的UTF8转换。之前论坛采用的是gb2312编码,但论坛上有台湾的注册用户,原来也能显示繁体中文,所以应该采用的是gbk或gb18030的编码。
在进行数据库的备份之前,要在原来的vb论坛后台把附件的存贮方式修改为文件方式,上传头像的存贮方式也修改为文件方式,而customprofilepic我没有找到对应的phpbb设置,所以这一块就直接丢弃了。
然后导出数据库:
mysql -uroot --add-drop-table --default-character-set=utf8 cngis > cngis.sql
进行编码的转换:
iconv -c -f gb18030 -t utf8 cngis.sql > cngisutf8.sql
然后修改此sql文件,替换所有的utf8为utf8,并在文件的开始处添加:
SET NAMES utf8;
SET CHARACTER_SET_CLIENT=utf8;
SET CHARACTER_SET_RESULTS=utf8;
然后新建一个数据库cngisutf8,作为我们的测试数据库并尝试导入此sql文件。
mysql -uroot cngisutf8 < cngisutf8.sql
若在导入过程中没有错误,那么恭喜你,你太幸运了。
我在这一步中遇到错误,导致我以为是中文编码的问题,还以为繁体中文无法正常转换过来呢,后来经过多次测试,发现是转换后的sql文件里存在歧义字符:
\'
导致mysql无法导入,若你也有这个问题,直接去掉那个反斜线就可以了。
安装一个全新的phpbb3。
拷贝我写的vbb3.0.x转换器到phpbb3的install/convertors目录下,并运行相应的转换程序。
在我的转换程序中,给phpbb3默认的数据库结构中添加了两个字段:
一个是users表里添加了一个salt字段,这个是为了无缝转换论坛密码使用的。
一个是topics表里添加了一个goodnees字段,这个是因为我原来的vbb3中使用了精华插件,若你没有使用,可以把相关部分注释掉。
修改论坛的登录程序,使原来的用户可以直接登录,就是修改includes/auth/auth_db.sql文件。
// Check password ...
// added for vb3 conversion
if (!$row['user_pass_convert'] && (md5($password) == $row['user_password']
or md5(md5($password).$row['salt'])==$row['user_password']))
{
if (md5($password)!=$row['user_password'])
{
// Unconverted password
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_password = "'.md5($password).'"
WHERE user_id = ' . $row['user_id'];
$db->sql_query($sql);
}if ($row['user_login_attempts'] != 0)
{
// Successful, reset login attempts (the user passed all stages)
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_login_attempts = 0
WHERE user_id = ' . $row['user_id'];
$db->sql_query($sql);
}
同时,前面的$sql语句中要添加一个字段:salt。
或者,也可以直接使用我提供的auth_db.php文件。
要注意,这个转换程序对自定义头像导入的功能不细致,还需要进一步处理,但我的论坛上已经够用了,若你的论坛有问题,请反馈给我。
同时,对用户的多组功能也不细致,因为我的论坛上只有2个用户是多组,而且只多1个组,因此转换程序在这儿也进行了简化。
在使用时,请根据自己的实际情况作调整!
授权:GPL2
致谢:
1. shely@ubuntu-cn irc,在编码转换问题上提供了大力帮助。
2. vb3_2phpbb的转换程序,在遇到问题时,首先就参考了这个转换程序。
发表回复