曼波建站搜索
热门搜索  曼波虚拟主机  多线主机  主机租用  主机托管  VPS 主机  智能建站  自助建站  曼波建站培训

Discuz2.5F论坛整合

Wikipedia,自由的百科全书

1、在Discuz的Loging.php和Regsiter.php里登陆成功处加上Hoping的登陆代码,这样,在Discuz里面登陆成功后也同时登陆了Mambo。 在logging.php 87行(123行,指Discuz2.5FSP1,下同)“$sessionupdated=0;”后加上: 代码:

$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    

在Discuz里面Logout处还要加上Hoping的登陆注销代码。 在logging.php 21行(28行)

$styleid = $_DCACHE['settings']['styleid'];
后加上:

代码:

//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    
在register.php第185行(166行)
setcookie('_discuz_pw', $discuz_pw, $timestamp + 2592000, $cookiepath, $cookiedomain);
后加上

代码:

//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 

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");
后加上:

代码:

//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 

改写用户个人资料时也同时改写Mambo用户资料。

在memcp.php188行(283行)
 dateformat='$dateformatnew', pwdrecover='', pwdrcvtime='' $avataradd $newpasswdadd WHERE username='$discuz_user'");
后加上

代码:

//Hacked for Mambo begin 
$db->query("UPDATE mos_users SET name ='$discuz_user',email='$emailnew',password='$newpassword'  WHERE username='$discuz_user'"); 
//Hacked for Mambo end 

3、在memcp.php(147行)“$newpasswdadd = ; ”前添加:(感谢adbox)原因: 假如用户在Discuz 控制面版更新个人资料时需要更改"提问"时,没有输入新的密码的话,那么mambo里的用户表#_users 将自动清空该用户的密码,这个用户也不可能登陆系统了。 代码:

$newpassword = $discuz_pw;  
4、在member.php(85行)
$query = $db->query("UPDATE $table_members SET password='$password', identifying='' WHERE uid='$uid'"); 
后添加:(感谢adbox)原因是如果用户忘记密码时取回密码尚需更改member.php 。

代码:

//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  

5、(适用于2.5)修改discuz目录admin中的members.php,在管理后台修改密码时就可以同时修改mambo的用户密码。(没有写更改用户名称的hack,所以请不要在后台更改用户名称。) 412行 代码:

} else {  

后添加: 代码:

//Hacked for Mambo begin 
   $mosusername=$member['username']; 
//Hacked for Mambo end  

在451行 代码:

      $passwordadd = $passwordnew ? ", password='".md5($passwordnew)."'" : NULL;  

后添加: 代码:

//Hacked for Mambo begin     
$mospasswordadd = $passwordnew ? "mos_users.password='".md5($passwordnew)."'" : NULL; 
//Hacked for Mambo end  

在469行 代码:

$passwordadd $secquesadd $groupidadd  WHERE uid='$uid'");  

后添加: 代码:

//Hacked for Mambo begin 
if($mospasswordadd){ 
$db->query("UPDATE mos_users SET $mospasswordadd WHERE username='$mosusername'"); 
} 
//Hacked for Mambo end  

6、取消Mambo的自带Mod_Login,换上mod_discuzlogin.rar里面带的Discuz的Login和Register代码。
简易的Discuz_Login_Mod见附件,可以安装。
这样,两个系统只使用Discuz的登陆注册,功能比Mambo的更强大。
请大家测试,如问题请回此贴。
重要更正:
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条。

本方法暂时不支持删除用户,如果要删除用户的话,请在两个系统中各执行一次删除操作。

关于$basePath的解释:
  $basePath设置的是相对于Discuz!安装的目录对应的Mambo目录。举个例子来说明一下:
  假如:Mambo安装于D:\usr\www\html\mambo
     Discuz安装于D:\usr\www\html\mambo\bbs
  则$basePath可以设为../

Personal tools