fishwood 2004-11-23 16:15
[05.12.2重要更新]Mambo与Discuz整合(解决M中无法管理用户问题)
1、在Discuz的Loging.php和Regsiter.php里登陆成功处加上hoping的登陆代码,这样,在Discuz里面登陆成功后也同时登陆了Mambo。
在logging.php 87行(123行,指Discuz2.5FSP1,下同)“$sessionupdated=0;”后加上:
[code]
$basePath ="../"; //注意,此处为discuz所处的目录,我的Discuz在Mambo目录下。
define( "_VALID_MOS", 1 );
require("../configuration.php");
if(!class_exists("mosMainFrame")){
include("../includes/mambo.php");
}
$database = new database( $mosConfig_host, $mosConfig_user, $mosConfig_password, $mosConfig_db, $mosConfig_dbprefix );
$mainframe = new mosMainFrame( $database, 'login', $basePath);
$acl = new gacl_api();
$mainframe->initSession();
$mainframe->login($discuz_user,$discuz_pw);
//Hacked for Mambo end
[/code]
在Discuz里面Logout处还要加上Hoping的登陆注销代码。
在logging.php 21行(28行)“$styleid = $_DCACHE['settings']['styleid'];”后加上:
[code]
//Hacked for Mambo begin
$basePath ="../"; //注意,此处为discuz所处的目录,我的Discuz在Mambo目录下。
define( "_VALID_MOS", 1 );
require("../configuration.php");
if(!class_exists("mosMainFrame")){
include("../includes/mambo.php");
}
$database = new database( $mosConfig_host, $mosConfig_user, $mosConfig_password, $mosConfig_db, $mosConfig_dbprefix );
$mainframe = new mosMainFrame( $database, '', $basePath);
$acl = new gacl_api();
$mainframe->initSession();
$mainframe->logout();
$mainframe->initSession();
//Hacked for Mambo end
[/code]
在register.php第185行(166行)“setcookie('_discuz_pw', $discuz_pw, $timestamp + 2592000, $cookiepath, $cookiedomain);”后加上
[code]
//Hacked for Mambo begin
$basePathccd ="../"; //注意,此处为discuz所处的目录,我的Discuz在Mambo目录下。
define( "_VALID_MOS", 1 );
require("../configuration.php");
if(!class_exists("mosMainFrame")){
include("../includes/mambo.php");
}
$database = new database( $mosConfig_host, $mosConfig_user, $mosConfig_password, $mosConfig_db, $mosConfig_dbprefix );
$mainframe = new mosMainFrame( $database, '', $basePathccd);
$acl = new gacl_api();
$mainframe->initSession();
$mainframe->login($discuz_user,$discuz_pw);
//Hacked for Mambo end
[/code]
2、在Discuz写入用户数据库的地方同时写入Mambo用户数据库。这样,在Discuz注册的用户同时也在Mambo里面注册,这里,我事先已经把Discuz和Membo数据库(前缀为mos_)装在一个表内。
在register.php157行(143行,“$uid = $db->insert_id();”后)“$db->query("UPDATE $table_settings SET lastmember='$username', totalmembers=totalmembers+1");”后加上:
[code]
//Hacked for Mambo begin
$db->query("INSERT INTO mos_users (name,username, password, registerDate, LastvisitDate, email,usertype,gid)
VALUES ('$username', '$username', '$password', '$timestamp', '$timestamp', '$email','','18')");
$query =$db->query("SELECT name,id FROM mos_users where name='$username'");
$thread = $db->fetch_array($query);
$db->query("INSERT INTO mos_core_acl_aro ( section_value,value,order_value,name,hidden)
VALUES ('users', '$thread[id]', '0', '$username', '0')");
$query =$db->query("SELECT name,aro_id FROM mos_core_acl_aro where name='$username'");
$thread = $db->fetch_array($query);
$db->query("INSERT INTO mos_core_acl_groups_aro_map(group_id,section_value,aro_id)
VALUES ('18','', '$thread[aro_id]')");
//Hacked for Mambo end
[/code]
[color=redb]改写用户个人资料时也同时改写Mambo用户资料。注:如此处原已经添加Mambo相关的hack要删除原修改内容。
[/color]
在memcp.php188行(283行)“ dateformat='$dateformatnew', pwdrecover='', pwdrcvtime='' $avataradd $newpasswdadd WHERE username='$discuz_user'");”后加上
[code]
//Hacked for Mambo begin
$db->query("UPDATE mos_users SET name ='$discuz_user',email='$emailnew',password='$newpassworda' WHERE username='$discuz_user'");
//Hacked for Mambo end
[/code]
3、[color=red]在memcp.php(147行)“$newpassword = md5($newpassword);”后添加:[/color](原因: 假如用户在Discuz 控制面版更新个人资料时需要更改"提问"时,没有输入新的密码的话,那么mambo里的用户表#_users 将自动清空该用户的密码,这个用户也不可能登陆系统了)。
[code]//Hacked for Mambo begin
$newpassworda = $newpassword;
//Hacked for Mambo end
[/code]
[color=red]注:如此处原已经添加Mambo相关的hack要删除原修改内容。[/color]
4、在member.php(85行)“$query = $db->query("UPDATE $table_members SET password='$password', identifying='' WHERE uid='$uid'"); ”后添加:(感谢adbox)原因是如果用户忘记密码时取回密码尚需更改member.php 。
[code]//Hacked for Mambo begin
$db->query("UPDATE mos_users,cdb_members SET mos_users.password='$password' WHERE mos_users.username=cdb_members.username and cdb_members.uid='$uid'");
//Hacked for Mambo end[/code]
5、(适用于2.5)修改discuz目录admin中的members.php,在管理后台修改密码时就可以同时修改mambo的用户密码。(没有写更改用户名称的hack,所以请不要在后台更改用户名称。)
412行
[code]} else {[/code]
后添加:
[code]
//Hacked for Mambo begin
$mosusername=$member['username'];
//Hacked for Mambo end [/code]
在451行
[code] $passwordadd = $passwordnew ? ", password='".md5($passwordnew)."'" : NULL;[/code]
后添加:
[code]
//Hacked for Mambo begin
$mospasswordadd = $passwordnew ? "mos_users.password='".md5($passwordnew)."'" : NULL;
//Hacked for Mambo end [/code]
在469行
[code]
$passwordadd $secquesadd $groupidadd WHERE uid='$uid'");[/code]后添加:
[code]//Hacked for Mambo begin
if($mospasswordadd){
$db->query("UPDATE mos_users SET $mospasswordadd WHERE username='$mosusername'");
}
//Hacked for Mambo end [/code]
6、取消Mambo的自带Mod_Login,换上mod_discuzlogin.rar里面带的Discuz的Login和Register代码。
简易的Discuz_Login_Mod见附件,可以安装。
这样,两个系统只使用Discuz的登陆注册,功能比Mambo的更强大。
请大家测试,如问题请回此贴。
[color=redb]重要更正:
1、附件登陆Mod中PHP文件有误,打开后,用你的Discuz所在目录去更换其中的“.jxtvnet/”。因为我的Discuz目录是网站根目录下的这个目录,发布时忘记清除了。抱歉。
2、已经在2005年7月31日在上面更新了D2.5F的修改处,因事很久没有来,抱歉!
3、建议下载本帖子第4页的由adbox提供的dz_mambo.zip。注意修改其中mod_discuzlogin.php里面的第37行和第57行、97行、108行中“./addons/discuz/”为你的Discuz所在的目录,否则会找不到文件。
4、已经在2005年8月22日更新,修改了D后台管理修改用户密码的问题,见上面第5条。
5、12月2日重要更新:修改了第2、3处关于memcp.php的修改,见上面第2、3条。原来的修改代码会导致注册用户无法自行在“控制面板”中修改密码,现已经改正,抱歉。
[/color]
色狼 2004-11-23 20:22
想問一下,妳這個和瘦馬哪個有什麼不同之處.........
bbpp 2004-11-23 21:12
思路和hoping差不多,但楼主已经写出来了,可以同时登陆和同时退出,应该不用考虑session了吧?
谢谢楼主~~
sssscc0799 2004-11-24 14:06
[quote="色狼"]想問一下,妳這個和瘦馬哪個有什麼不同之處.........[/quote]
同意
sssscc0799 2004-11-24 14:17
楼主只解决了 在DZ登录 我想:做个模块,就像PHPBB的登录模块。
fishwood 2004-11-24 14:26
[quote="色狼"]想問一下,妳這個和瘦馬哪個有什麼不同之處.........[/quote]
在论坛里面找了N遍,都没有找到hoping的整个“攻略”,只看到了他的两个置顶的帖子,里面都没有说完全呀。
是不是还有什么他的帖子我没有看到呀?
hoping 2004-11-24 14:56
[quote]原帖由 [i]fishwood[/i] 发表
在论坛里面找了N遍,都没有找到hoping的整个“攻略”,只看到了他的两个置顶的帖子,里面都没有说完全呀。
是不是还有什么他的帖子我没有看到呀?[/quote]
呵呵,已经到置顶贴中了。这个以前只是发表在了我的网站中,忘记给这儿发啦。
fishwood 2004-11-24 15:52
这样呀,我总算明白了。
Hoping只是提供了登录/注销接口,并没有象我这样提供全套方案。
我的呢,是站在Hoping的肩膀上,利用Hoping的登录/注销接口,进一步全面完成了Mambo和Discuz的结合,使之现实可用。
sssscc0799 2004-11-25 09:09
[quote]原帖由 [i]hoping[/i] 发表
[quote]原帖由 [i]fishwood[/i] 发表
在论坛里面找了N遍,都没有找到hoping的整个“攻略”,只看到了他的两个置顶的帖子,里面都没有说完全呀。
是不是还有什么他的帖子我没有看到呀?[/quote]
呵呵,已经到置顶贴中了。这个以前只是发表在了我的网站中,忘记给这儿发啦。[/quote]
佩服阿
fishwood 2004-11-28 12:47
修正了在Mambo里面无法管理用户的问题。
如果你已经根据以前的Hack进行了修改,请在register.php157行
[code] $db->query("INSERT INTO mos_users (name,username, password, registerDate, LastvisitDate, email,usertype,gid)
VALUES ('$username', '$username', '$password', '$timestamp', '$timestamp', '$email','','18')"); [/code]
后加上
[code]
$query =$db->query("SELECT name,id FROM mos_users where name='$username'");
$thread = $db->fetch_array($query);
$db->query("INSERT INTO mos_core_acl_aro ( section_value,value,order_value,name,hidden)
VALUES ('users', '$thread[id]', '0', '$username', '0')");
$query =$db->query("SELECT name,aro_id FROM mos_core_acl_aro where name='$username'");
$thread = $db->fetch_array($query);
$db->query("INSERT INTO mos_core_acl_groups_aro_map(group_id,section_value,aro_id)
VALUES ('18','', '$thread[aro_id]')");
[/code]
第一楼帖子代码已经据此修正。
sssscc0799 2004-11-28 15:13
能不能实现 在DZ中删除某用户 mambo中同时也删除此用户
可否实现阿??呵呵
sssscc0799 2004-11-28 15:31
我对比了你和hoping的代码 就你上面添加的那段,2位的完全不一样~~~~~哈哈,到底有啥子区别亚??
测试了一下,hoping的注册用户在M后台依然管理不了,楼主的可以管理
fishwood 2004-11-30 00:44
[quote]原帖由 [i]sssscc0799[/i] 发表
我对比了你和hoping的代码 就你上面添加的那段,2位的完全不一样~~~~~哈哈,到底有啥子区别亚??
测试了一下,hoping的注册用户在M后台依然管理不了,楼主的可以管理[/quote]
他的少加了数据库增加后台管理用户的两个地方。其实只要看一下index.php就可以看到这两个地方,可能hoping没有留意。
hoping 2004-11-30 02:48
[quote]原帖由 [i]fishwood[/i] 发表
他的少加了数据库增加后台管理用户的两个地方。其实只要看一下index.php就可以看到这两个地方,可能hoping没有留意。[/quote]
呵呵,是啊。当时看完两个系统的注册和登录模块已经很晚了。没有太多的留意,忘了许多东西了。
zolo2010 2004-12-3 02:43
非常不错啊,可惜我用的是phpwind,大师门快出一个MAMBO和PHPWIND的整合吧
FaFniR 2004-12-4 12:27
Re: [重要更新]Mambo与Discuz整合(解决M中无法管理用户问题)
[quote]原帖由 [i]fishwood[/i] 发表
3、取消Discuz的自带Mod_Login,换上Discuz的Login和Register代码。
简易的Discuz_Login_Mod见附件,可以安装。[/quote]
请问这部怎么做?怎么取消安装discuz的Mod?
fishwood 2004-12-4 15:08
Re: [重要更新]Mambo与Discuz整合(解决M中无法管理用户问题)
[quote]原帖由 [i]FaFniR[/i] 发表
[quote]原帖由 [i]fishwood[/i] 发表
3、取消Discuz的自带Mod_Login,换上Discuz的Login和Register代码。
简易的Discuz_Login_Mod见附件,可以安装。[/quote]
请问这部怎么做?怎么取消安装discuz的Mod?[/quote]
在后台取消发布即可。再安装、发布Discuz_Login_Mod。
云淡风清 2004-12-10 05:14
Re: [重要更新]Mambo与Discuz整合(解决M中无法管理用户问题)
[quote]原帖由 [i]fishwood[/i] 发表
[quote]原帖由 [i]FaFniR[/i] 发表
[quote]原帖由 [i]fishwood[/i] 发表
3、取消Discuz的自带Mod_Login,换上Discuz的Login和Register代码。
简易的Discuz_Login_Mod见附件,可以安装。[/quote]
请问这部怎么做?怎么取消安装discuz的Mod?[/quote]
在后台取消发布即可。再安装、发布Discuz_Login_Mod。[/quote]
真不好意思,我是第一次接触Mambo,以下不明之处请多指教!
1. “后台取消发布即可”是在“模块->安装/卸载”里删除吗?但是我看不到Mod_Login的字样,该怎么办呢?
2. “换上Discuz的Login和Register代码”这代码又在哪里?
3. “简易的Discuz_Login_Mod见附件,可以安装。”这条也不明,附件中只有mod_discuzlogin.php和mod_discuzlogin.xml两个文件,怎么安装呢?
谢谢!
云淡风清 2004-12-10 08:30
从“模块->网站模板”有个取消发布,不知是不是?
云淡风清 2004-12-10 08:41
“换上Discuz的Login和Register代码”难道说换上代码也就是楼主的第一步,刚才修改完毕现在已经完成?
[code]1、在Discuz的Loging.php和Regsiter.php里登陆成功处加上hoping的登陆代码,这样,在Discuz里面登陆成功后也同时登陆了Mambo。[/code]
云淡风清 2004-12-10 08:44
如果这样的话,Discuz_Login_Mod怎么安装呢?
是不是把mod_discuzlogin.php和mod_discuzlogin.xml这两个文件粘贴到/administrator/modules目录就可以了?
云淡风清 2004-12-10 08:47
好象不行呀,点上面“新增”一个模板?
云淡风清 2004-12-10 09:28
还是不行
ZFan 2004-12-10 12:36
太好了。马上研究一下。
云淡风清 2004-12-10 20:54
哈哈,一切搞定!只是楼主似乎没多少诚心呀,压缩包里怎么会有jxtvnet的呢~~~也就是跳转那个:)
测试地址 http://www.chinawj.net/
fishwood 2004-12-11 16:52
[quote="云淡风清"]哈哈,一切搞定!只是楼主似乎没多少诚心呀,压缩包里怎么会有jxtvnet的呢~~~也就是跳转那个:)
测试地址 http://www.chinawj.net/[/quote]
没有注意,这下丢脸丢大了, :oops: :oops:
fishwood 2004-12-11 17:08
其实这个整合还是会有些问题的,比如你不能在Discuz后台删除用户,否则你再重新用这个被删除的用户名注册时会提示你用户名已经存在。主要是后台管理用户那块还没有加入合适的同步删除更新的代码。
留给后来人解决吧。呵呵。
sssscc0799 2004-12-11 17:30
[quote]原帖由 [i]fishwood[/i] 发表
其实这个整合还是会有些问题的,比如你不能在Discuz后台删除用户,否则你再重新用这个被删除的用户名注册时会提示你用户名已经存在。主要是后台管理用户那块还没有加入合适的同步删除更新的代码。
留给后来人解决吧。呵呵。[/quote]
在DZ后台删除用户是 也要在mambo后台删除此用户 ,就不会出现上述毛病了 虽然麻烦
focxu 2004-12-20 11:56
没看明白,我还是无法搞定phpwind和mambo共享用户名登陆的问题,还是请hoping高手出手解决吧
杜皮厚厚 2005-1-13 15:30
[问题]请云清兄指点一下,我的也是disuz呀
但是我搞的不是很明白。希望指点一下。谢谢了。
请写出你的详细一点的过程。、
杜皮厚厚 2005-1-14 14:06
[原创]
discuz2.5f和 mambo的结合该怎么作牙
上传那个mod_discuzlogin的模块压缩包,但是出现下面的错误提示信息,请fishwood先生给看看解答一下。不好意思。
上传 module - 上传失败
ERROR: Could not find an XML setup file in the package.
[ 继续 ... ]
上传 module - 失败
Installation file not found:
C:\Apache2\myweb\mambo\media\install_41e776eeacd4d\mod_discuzlogin\
[ 继续 ... ]
请fishwood先生指点一下好不好。
晕。麻烦了。
杜皮厚厚 2005-1-14 15:58
[原创]不好意思,我搞定了。
把那个目录中的联结地址修改一下,
重新压缩copy到models目录下,安装就可以了。好了,抱歉了
不过请问这样以后的mambo数据库中的数据是不是包括了所有的已前的discuz已经存在的用了,也就是会说 discuz中的用户都copy到 mambo数据库中了吗???(先把问题写在这,我自己到mysql数据库去看看。懂了给大家写出答案,哈哈)
杜皮厚厚 2005-1-14 16:24
[问题]
安装成功但是有机个问题还是要问问
1. 登录后想保留在mambo主页位置上,而不是直接进入论坛该如何操作
2. mambo首页上应该有记录,比如有多少个会员登录,这么作,首页上还是游客,也就是mambo数据库没有同步更新的原因吧
3. 2个数据库同步更新做到了,但如何把discuz的原来用户导入到mambo数据库中。
4. discuz2.5新增加了 安全提问那个选项,为了增加后台安全,但是这样的话只要希望提出安全提问的人,在这个上面就登录不了,提示密码错误等等,请问这个如何解决。
5.以上问题提出的目的,一是为了更好地扩从这个hack,二是为了给老大的hook for discuz等等的组件程序提供参考。。
请有过类似经历的人提出自己的见解。谢谢。
BBB7878 2005-1-21 13:30
上传 mambot - 上传失败
Unrecoverable error "PCLZIP_ERR_BAD_FORMAT (-10)"
[ 继续 ... ]
上传 mambot - 失败
Installation file not found:
[ 继续 ... ]
这是什么问题啊?
压缩包里就两个文件
BBB7878 2005-1-21 13:41
上传 mambot - 上传失败
Unrecoverable error "PCLZIP_ERR_BAD_FORMAT (-10)"
[ 继续 ... ]
上传 mambot - 失败
Installation file not found:
[ 继续 ... ]
这是什么问题啊?
压缩包里就两个文件
speedy 2005-2-22 10:41
[问题]
现在我的discuz上已经有200多个会员了,如何把这些会员转到mambo上呢?
现在的这个整合只是对于新注册的用户有效,那么已注册的用户的数据如何写进mambo的数据库?
qqside 2005-2-27 22:38
还是有很多很多问题的哦 郁闷中
对discuz2.5f几乎是没什么用
ccino 2005-3-2 10:45
[quote]原帖由 [i]zolo2010[/i] 发表
非常不错啊,可惜我用的是phpwind,大师门快出一个MAMBO和PHPWIND的整合吧[/quote]
是啊。我也正需要。。。
adbox 2005-3-12 15:00
有一个小问题:
在整合Discuz 2.5的时候,尚需另外修改 memcp.php 一处:
在 [b]$newpasswdadd = '';[/b] 前添加:
$newpassword = $discuz_pw;
原因: 假如用户在Discuz 控制面版更新个人资料时需要更改"提问"时,没有输入新的密码的话,那么mambo里的用户表#_users 将自动清空该用户的密码,这个用户也不可能登陆系统了
wl82118 2005-3-18 10:09
新手请教一下。我有的discuz2.5F,在logging.php 87行没有看到“$sessionupdated=0;”;在logging.php 21行也没看到“$styleid = $_DCACHE['settings']['styleid'];”;我该怎么做?! :oops: