第一步:
1.使用新的uc_client文件,打開phpsso_server/api/ 目錄修改原uc_client目錄名稱為uc_client_backup,然后將ucenter下面文件uc_client覆蓋到該目錄下.
第二步:
1.登錄Discuz! X31后臺,進入“UCenter”,點擊“應用管理”后點擊“添加新應用”進入應用添加界面,設置如下:
1、安裝方式選擇“自定義安裝”
2、應用類型選擇“其他”
3、應用名稱填“phpsso”
4、應用的主 URL, 即phpsso_server的路徑,視實際情況而定,注意最后不要帶斜杠。如本教程填寫為http://127.0.0.1/phpsso_server
5、通信密鑰,任意填寫64字節以內的英文字母及數字,不過要記住,因為phpcms 的通信密鑰必須與此設置保持一致,否則 phpsso 將無法與 UCenter 正常通信。如本教程設置通信密鑰為:chinaz
6、應用IP、應用的物理路徑、查看個人資料頁面地址默認留空即可,而應用接口文件名稱默認uc.php即可。
7、標簽單條顯示模板、標簽模板標記說明兩項默認留空即可。
8、是否開啟同步登錄:是。只有開啟后,兩款程序才能實現同步登錄。
9、完成后提交,將生成新的應用ID。(記住這個應用ID,在”第三步“中將用到它。)
10、進入后臺“站長”,“UCenter 設置”選項。"是否允許直接激活"一項,選擇“是”。
下面去Phpcms v9中配置phpsso。
第三步:配置phpsso
登錄Phpcms v9后臺,進入“phpsso”,點擊“系統設置”,進入“UCenter配置”設置界面,設置如下:
1、是否啟用:是
2、Ucenter api 地址,即uc_server的路徑,根據你的安裝情況而定,注意最后不要帶斜杠。如本教程填寫為:http://localhost/bbs/uc_server
3、Ucenter 數據庫信息:根據自己情況填寫數據庫的信息。其中數據庫表前綴的格式為“`數據庫名`.數據庫前綴”,注意數據庫名的不是單引號。
4、應用id(APP ID),即第二步創建的 phpsso 應用時自動生成的應用ID。
5、Ucenter 通信密鑰,即第二步中設置的“通信密鑰”,這兩個值一定要確保一致,否則會導致無法通信。
第四步:查看通信狀態
登錄Discuz! X31后臺,進入“UCenter”,點擊“應用管理”查看第二步中創建的 phpsso 應用與 UCenter 通信是否成功,如果 通信失敗,請檢查“第二步”與“第三步”中的各項參數配置是否正確.
第五步:修改 Discuz! X31會員登錄相關
若不修改此處則在Phpcms v9登錄后可以同步登錄到Discuz! X31,但是在Discuz! X31登錄卻無法同步登錄到Phpcms v9,修改步驟如下:
1、找到discuz目錄下 template/default/member/login.htm,刪除(如一樣可不做處理)
- onsubmit="{if $this->setting['pwdsafety']}pwmd5('password3_$loginhash');{/if}pwdclear = 1;ajaxpost('loginform_$loginhash', 'returnmessage_$loginhash', 'returnmessage_$loginhash', 'onerror');return false;"
2、找到discuz目錄下 template/default/member/login_s imple.htm,刪除,如一樣可不做處理.
- onsubmit="{if $_G['setting']['pwdsafety']}pwmd5('ls_password');{/if}return lsSubmit();"
3、找到discuz目錄下 /source/function/function_message.php,查找(如一樣可不做處理):
$param['header'] = true;
替換為:
$param['header'] = false;
第六步:
1.(注冊提示錯誤:“驗證碼錯誤”)修改如下:
文件位置:/phpcms/modules/member/index.php
2.(phpcmsv9登陸,“discuz不同步登陸錯誤”)修改如下:
文件位置:/phpsso_server/api/uc_client/client.php
第七步:找到discuz目錄網站:
分析其主要原因是phpsso與ucenter通信成功后,XXX_ucenter_member表中的用戶已經同步成功但是在XXX_common_member中并沒有此用戶,所以只要在xxx_common_member中插入此用戶就可以了,所以修改discuz/api/uc.php下找到function synlogin($get, $post)整段,修改為下面的內容:
- function synlogin($get, $post) {
- global $_G;
- if(!API_SYNLOGIN) {
- return API_RETURN_FORBIDDEN;
- }
- header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');
- $cookietime = 31536000;
- $uid = intval($get['uid']);
- $query = DB::query("SELECT uid, username, password FROM ".DB::table('common_member')." WHERE uid='$uid'");
- if ($member = DB::fetch($query))
- {
- dsetcookie('auth', authcode("$member[password]/t$member[uid]", 'ENCODE'), $cookietime);
- }else
- {
- $username = $get['username'];
- $query = DB::query("SELECT uid, username, password, email FROM ".DB::table('ucenter_members')." WHERE username='$username'");
- $member = DB::fetch($query);
- $password = $member['password'];
- $email = $member['email'];
- $ip = $_SERVER['REMOTE_ADDR'];
- $time = time();
- $userdata = array(
- 'uid'=>$uid,
- 'username'=>$username,
- 'password'=>$password,
- 'email'=>$email,
- 'adminid'=>0,
- 'groupid'=>10,
- 'regdate'=>$time,
- 'credits'=>0,
- 'timeoffset'=>9999
- );
- DB::insert('common_member', $userdata);
- $status_data = array(
- 'uid' => $uid,
- 'regip' => $ip,
- 'lastip' => $ip,
- 'lastvisit' => $time,
- 'lastactivity' => $time,
- 'lastpost' => 0,
- 'lastsendmail' => 0
- );
- DB::insert('common_member_status', $status_data);
- DB::insert('common_member_profile', array('uid' => $uid));
- DB::insert('common_member_field_forum', array('uid' => $uid));
- DB::insert('common_member_field_home', array('uid' => $uid));
- DB::insert('common_member_count', array('uid' => $uid));
- DB::query('UPDATE '.DB::table('common_setting')." SET svalue='$username' WHERE skey='lastmember'");
- $query = DB::query("SELECT uid, username, password FROM ".DB::table('common_member')." WHERE uid='$uid'");
- if ($member = DB::fetch($query))
- { //Vevb.com
- dsetcookie('auth', authcode("$member[password]/t$member[uid]", 'ENCODE'), $cookietime);
- }
- }
- }
至此完成,上圖為證.
注冊也可以同步登陸,不能配置成功的多檢查下自身問題,呵呵.
新聞熱點
疑難解答