- 下載discuz源碼并懂拾,以及附件中的api.zip啡莉,ThinkphpUcenter.zip文件逃默,將源碼與ThinkPHP框架部署如下:
按照上圖部署完項目目錄后進(jìn)入下一步攀圈,關(guān)于config.inc.php文件在此先不用關(guān)心昭娩,在安裝完成discuz并在ucenter中添加了應(yīng)用之后便可得到此文件中的代碼凛篙。
2.安裝discuz論壇 http://yourhost/discuz/install
3.安裝完成后進(jìn)入管理中心若提示:Please delete install/index.php via FTP! 需將/discuz/install/install.php 刪除或改名稱
之后進(jìn)入Ucenter點擊應(yīng)用管理添加應(yīng)用。應(yīng)用配置如下圖
填寫完成后提交栏渺,會在提交按鈕下方出現(xiàn)配置代碼:
將些部分代碼復(fù)制到config.inc.php文件中保存呛梆,至此在Ucenter應(yīng)用管理列表中的該應(yīng)用通訊狀態(tài)應(yīng)為通訊成功。
- 回到項目目錄磕诊,在ThinkPHP應(yīng)用的配置文件config.php中添加數(shù)組元素“'AUTH_KEY' => 'xxxxx”填物;值在Discuz配置文件目錄config下的config_global.php文件中的$_config['security']['authkey']的值。
- 修改Ucenter與ThinkPHP沖突的類名
(1)/uc_client/model/base.php 將類名改為uc_base (只需更改類名不需更改文件名)
(2)將/uc_client/control/下的所有繼承base類的文件改為繼承uc_base
(3)檢查/uc_client/lib/db.class.php 類名是否為 ucclient_db霎终,若為db則需更改為ucclient_db - 配置雙向登錄
創(chuàng)建BaseController.class.php 文件滞磺,使所有Controller都繼承自BaseController,BaseController.class.php代碼如下
protected function _initialize()
{
if (checkLogin()) {
$this->autologin();
}
}
public function autologin()
{
if (isset($_COOKIE['8asp_2132_auth']) && !empty($_COOKIE['8asp_2132_auth'])) {
Vendor('ThinkphpUcenter.UcApi');//載入UcApi擴(kuò)展
$key = md5(C('AUTH_KEY') . $_COOKIE['8asp_2132_saltkey']);//獲取在本應(yīng)用的配置文件config.php中的解密鑰匙
$userMsg = explode("\t", uc_authcode($_COOKIE['8asp_2132_auth'], 'DECODE', $key)); //得到加了密的password【$userMsg[0]】和uid【$userMsg[1]】
$userInfo = uc_get_user($userMsg[1], 1);//通過uid獲取username
$_SESSION['user_id'] = $userMsg[1];
$_SESSION['username'] = $userInfo[1];
$_SESSION['email'] = $userInfo[2];
$member = D('member')->where('user_name ="' . $userInfo[1] . '"')->find();
session('member', $member);
} else {
//do something
}
}
其中$_COOKIE['8asp_2132_auth']中的8asp可通過dump($_COOKIE);來獲取將此代碼段中的四處$_COOKIE['XXXX_2132_XXXX']替換為dump出的前綴莱褒。完成后在項目登錄方法中登錄驗證成功后添加如下代碼
vendor('ThinkphpUcenter.UcApi');
$login = UcApi::login($member['user_name'],$pass);
if (!$login){
$this->error('同步登錄失敗','/Index/index');
}
echo $login['synlogin'];//這一步一定添加击困,此處輸出的為同步登錄的js代碼,若使用ajax傳值此處應(yīng)別做處理
退出登錄時在退出成功后調(diào)用以下代碼
vendor('ThinkphpUcenter.UcApi');
echo UcApi::logout();//輸出同步登出的代碼 與登錄時類似
7.項目注冊后論壇同步用戶信息
在項目網(wǎng)站注冊時需同時向以下數(shù)據(jù)表插入用戶數(shù)據(jù)
common_member广凸、common_member_status阅茶、common_member_profile、common_member_field_forum谅海、common_member_field_home脸哀、common_member_account等以保證用戶被激活,注意哪些字段不能為空扭吁。
8.論壇注冊后同步到用戶信息
與第7條類似撞蜂,在discuz注冊方法中將用戶信息添加到項目網(wǎng)站相關(guān)數(shù)據(jù)表即可(對discuz了解較少盲镶,未實現(xiàn))
附件一:api.zip 鏈接: http://pan.baidu.com/s/1slF2GjV 密碼: dz6e
附件二:ThinkPHPUcenter.zip鏈接: http://pan.baidu.com/s/1nvCnhmL 密碼: in63