帝国论坛帝国网站管理系统交流区数据转换曲线救国,动易到帝国的转换程序 【本版专题贴子】  
主题:曲线救国,动易到帝国的转换程序 [加入收藏夹]   

足下
用户头衔:秀才

精华贴   :0
发贴数   :179
经验值   :518
注册时间:2007-11-30
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 1 楼]
曲线救国,动易到帝国的转换程序
第一步: 动易2006 to phpcms 【http://soft.phpcms.cn/2007/0524/down_114.html
第二步:phpcms to ecms 4.6 (届时的4.7应该类似)【http://bbs.phome.net/showthread-36-30019-0.html
除了会员有点问题,其他基本都过来了。
关键的第三步:因为原动易会员密码使用16位md5,经上两步转换至ecms后会发生密码错误。

两个办法解决问题:
1. 将e/class/user.php中的$user_dopass=0; 改成 $user_dopass=3;
//密码保存形式,0为md5,1为明码,2为双重加密,3为16位md5
这样旧会员可以正常登录,新注册会员也同样使用16位md5密码加密。
缺点:密码依然采用16位加密,以后如果再要数据转换时问题依然存在

2. 保持e/class/user.php中的$user_dopass=0;  不变;

查找
$num=$empire->gettotal("select count(*) as total from ".$user_tablename." where ".$user_username."='$utfusername' and ".$user_password."='".$password."' limit 1");
在其上面添加
        $ur=$empire->fetch1("select ".$user_password." from ".$user_tablename." where ".$user_username."='$utfusername'");
                if(strlen($ur[$user_password])==16)
                {$password=substr($password,8,16);}
查找
$num=$empire->gettotal("select count(*) as total from ".$user_tablename." where ".$user_username."='$username' and ".$user_password."='".$oldpassword."'");
在其上面添加
        $ur=$empire->fetch1("select ".$user_password." from ".$user_tablename." where ".$user_username."='$username'");
                if(strlen($ur[$user_password])==16 && strlen($oldpassword)==32)
                {$oldpassword=substr($oldpassword,8,16);}

OK,旧会员可以继续使用16位md5登录,修改密码后,则转换为32位。新注册会员直接为32位。
缺点:如果旧会员不修改密码,则一直为16位,仍然对以后数据转换不变。

综合,个人推荐第2种方法,因为32位可以很容易转换为16位,substr(string,8,16),而反之则几乎不可能。

[该贴被修改 1 次,最后修改时间 2007-12-13 00:11:07 ]



2007-12-13 00:09:06 已设置保密 顶部 回复 引用 报告 编辑 删除

快速回复
内容

表情
使用EBB代码 使用smile代码 显示签名 自动分析url 自动分析img
     【进入高级模式】   (按 Ctrl+Enter 直接提交)
    顶部  加入收藏夹
关于帝国 | 广告服务 | 联系我们 | 法律声明 | 隐私条款 | 许可协议
Powered by: EBB Version 2.2.1