大家好!現(xiàn)在很多站長(zhǎng)朋友喜歡使用dedecms和discuz,但截至到今年5月,官方都沒(méi)有提供很好的整合方案; 于是我就自己手動(dòng)對(duì)它們進(jìn)行了整合,我曾今在5月份發(fā)布了discuz7+dedecms5.3的整合程序,但最近有大部分使用本程序的站長(zhǎng)朋友找過(guò)我,原因是dedecms官方升級(jí)到5.5了,原程序不能正常使用了;我看了一下,5.5版本的注冊(cè)頁(yè)面有個(gè)參數(shù)變了,把參數(shù)名改一下就OK了;但是考慮到程序再次升級(jí)的問(wèn)題,我有換了一種方式對(duì)其整合,還加上了uchome哦;這次方法是直接寫(xiě)入數(shù)據(jù)庫(kù)的方式,不管官方再怎樣升級(jí),只要數(shù)據(jù)表名和字段名沒(méi)有變,程序都可以依然正常使用哦
好了,不廢話(huà)了,開(kāi)始:
注冊(cè)整合開(kāi)始:
創(chuàng)建一文件zhuce.php,其作用定義dedecms,discuz,uchome的域名,和同步登陸和同步退出;
修改dedecms的注冊(cè)頁(yè)面member/reg_new.php和uchome的注冊(cè)頁(yè)面source/do_register.php<?include("zhuce.php")?>
<div style="display:none">
<form action="<?=$bbsurl?>/register.php" name="zhuce">
<input name="rf" value="<?=$_SERVER['SERVER_NAME']?>"><form>
</div>
<?="<script>zhuce.submit();</script>"?>
其中有個(gè)rf參數(shù),作用是獲取用戶(hù)是從哪里注冊(cè)的,等待注冊(cè)成功跳轉(zhuǎn)回去;
修改discuz注冊(cè)頁(yè)面模板templates/default/register.htm<label><em>帳號(hào)類(lèi)型:</em>
<input type="radio" name="mtype" value="個(gè)人" checked>個(gè)人
<input type="radio" name="mtype" value="企業(yè)">企業(yè)</label>
<label><em>{lang username}:</em><input type="text" id="username" name="username" autocomplete="off" size="25" maxlength="15" value="" onBlur="checkusername()" tabindex="1" class="txt" /> *</label>
<label><em>昵稱(chēng)/公司:</em><input type="text" name="nickname" autocomplete="off" size="25" maxlength="15" tabindex="1" class="txt" /> *</label>
<label><em>登陸{lang password}:</em><input type="password" name="password" size="25" id="password" onkeypress="detectcapslock(event, this)" tabindex="1" class="txt" /> *</label>
<label><em>{lang password_confirm}:</em><input type="password" name="password2" size="25" id="password2" onkeypress="detectcapslock(event, this)" tabindex="1" value="" class="txt" /> *</label>
<label><em>{lang email}:</em><input type="text" name="email" autocomplete="off" size="25" id="email" onBlur="checkemail()" tabindex="1" class="txt" /> *</label>
修改discuz的注冊(cè)頁(yè)面:register.php,加上以下代碼:$depas=md5($_POST[password]);//dedecms采用md5方式對(duì)其密碼加密
$db->query("INSERT INTO $detable (mtype,userid,pwd,uname,email)
VALUES ('$_POST[mtype]','$username','$depas','$_POST[nickname]','$email')");//寫(xiě)入dedecms的用戶(hù)表
修改原代碼$db->query("REPLACE INTO {$tablepre}memberfields (uid, authstr $fieldadd1) VALUES ('$uid', '$authstr' $fieldadd2)");
為以下代碼,其作用是同是添加昵稱(chēng)并把昵稱(chēng)也寫(xiě)在discuz的表里面;$db->query("REPLACE INTO {$tablepre}memberfields (uid,nickname,authstr $fieldadd1) VALUES ('$uid','$_POST[nickname]','$authstr' $fieldadd2)");
再加上以下代碼,其作用是用于跳轉(zhuǎn),用從哪來(lái)注冊(cè)的跳轉(zhuǎn)回哪里去if($_POST[rf]){echo "<b><font color=red size=36>注冊(cè)成功!!</font></b><script>location="http://$_POST[rf]";</script>";}
注冊(cè)整合結(jié)束;開(kāi)始頭像調(diào)用整合:
修改dedecms用戶(hù)調(diào)用文件 member/ajax_loginsta.php$mid = $cfg_ml->fields['mid'];//獲取用戶(hù)的id
$face = $ucurl."/avatar.php?uid=".$mid."&size=small";
修改dedecms首頁(yè)模板 templets/default/index.htm<!-- /userlogin -->
<script language="javascript" type="text/javascript">CheckLogin();</script>
<div class="latestlogin"> <strong>最近登陸的會(huì)員</strong>
<ul class="e7">
{dede:php}
while($rs = $db->GetArray('user')){
echo "<li><a href=""$homeurl."/".$rs[mid]."" target="_blank"><img src="".$ucurl."/avatar.php?uid=".$rs[mid]."&size=small"" alt='".$rs[uname]."的空間' width="52" height="52" />".$rs[uname]."</a></li>";}
{/dede:php}
</ul>
</div>
<!-- /latestlogin -->
頭像調(diào)用整合結(jié)束,開(kāi)始整合同步登陸:如何實(shí)現(xiàn)請(qǐng)看下面zhuce.php解釋?zhuān)?
修改dedecms的登陸頁(yè)面 member/index_do.php 在提示登陸成功的代碼后面加上:echo "<iframe src=".$bbsurl."/zhuce.php?s=in&u=".$username."></iframe>."
修改discuz的登陸頁(yè)面 logging.php 在提示登陸成功的代碼后面加上:echo "<iframe src=".$deurl."/zhuce.php?s=in&u=".$username."&p=".$password."></iframe>"
同步登陸整合結(jié)束,開(kāi)始整合同步退出:如何實(shí)現(xiàn)請(qǐng)看下面zhuce.php解釋?zhuān)?
修改dedecms的登陸頁(yè)面 member/index_do.php 在提示成功退出的代碼后面加上:echo "<iframe src=".$bbsurl."/zhuce.php?s=out></iframe>"
修改discuz的登陸頁(yè)面 logging.php 在提示成功退出的代碼后面加上:echo "<iframe src=".$deurl."/zhuce.php?s=out></iframe>"
同步退出整合完畢!!
zhuce.php解釋?zhuān)?lt;?
$bbsurl="http://bbs.my.com";//填寫(xiě)您的discuz的完整URL,前面加“http://”,后面不要加“/”
$ucurl="http://www.my.com/ucenter";//填寫(xiě)您的UCenter的完整URL,前面加“http://”,后面不要加“/”
$homeurl="http://home.my.com";//填寫(xiě)您的UChome的完整URL,前面加“http://”,后面不要加“/”
if($_GET[s]=="in"){include("member/config.php");//判斷是登陸
$cfg_ml = new MemberLogin(7*3600);
$rs = $cfg_ml->CheckUser($_GET[u], $_GET[p]);//寫(xiě)cookies
}
if($_GET[s]=="out"){include("member/config.php");//判斷是退出
$cfg_ml->ExitCookie();//清cookies
}
?>
<?
$deurl="http://www.my.com";//填寫(xiě)您的dedecms的完整URL,前面加“http://”,后面不要加“/”
$detable="dede_"."member";//填寫(xiě)您的dedecms表名前綴
if($_GET[s]=="in"){include("include/common.inc.php");//判斷是登陸
$query0 = $db->query("SELECT * FROM {$tablepre}members WHERE username='$_GET[u]'");
while($user0 = $db->fetch_array($query0)) {$uid0=$user0[uid];$pwd0=$user0[password];}
dsetcookie('cookietime', $cookietime, 31536000);//提取出用戶(hù)信息
dsetcookie('auth', authcode("$pwd0 $discuz_secques $uid0", 'ENCODE'), $cookietime, 1, true);//寫(xiě)cookies
}
if($_GET[s]=="out"){include("include/common.inc.php");//判斷是退出
clearcookies();//清cookies
}
?>
登陸或退出的時(shí)候,同時(shí)做cookies操作
整合完畢!