1. 程式人生 > >ucenter通訊實現同步登入、同步退出(詳細)

ucenter通訊實現同步登入、同步退出(詳細)

首先,需要去官網下載一個ucenter的包。然後解壓下來。

先把ucenter/ucenter這個資料夾複製到你的專案根目錄下改名為uc_server;(這裡只是我建議修改,以便於我下面寫的配置);


然後將ucenter/advanced/uc_client複製貼上到自己的專案上。

在你專案根目錄建立一個api的資料夾、把ucenter/advanced/examples/api裡頭有個uc.php複製到你專案的api資料夾下。

其次同樣,ucenter/advanced/examples把include資料夾複製到你專案根目錄下。(這個呢,是連線資料庫的一個類,放進去就可以了什麼都不用改)

接下來在你網站根目錄下建立一個config.inc.php檔案。

<?php 
define('UC_CONNECT', 'mysql');   // 連線 UCenter 的方式: mysql/NULL, 預設為空時為 fscoketopen()
                                               // mysql 是直接連線的資料庫, 為了效率, 建議採用 mysql

//資料庫相關 (mysql 連線時, 並且沒有設定 UC_DBLINK 時, 需要配置以下變數)
define('UC_DBHOST', 'localhost');            // UCenter 資料庫主機
define('UC_DBUSER', 'root');                // UCenter 資料庫使用者名稱
define('UC_DBPW', 'root');                    // UCenter 資料庫密碼
define('UC_DBNAME', 'ucenter');                // UCenter 資料庫名稱
define('UC_DBCHARSET', 'utf-8');                // UCenter 資料庫字符集
define('UC_DBTABLEPRE', 'ucenter.uc_');            // UCenter 資料庫表字首

//通訊相關
define('UC_KEY', 'yeN3g9EsNfiaYfodV63dI1j8Fbkssk5HaL7W4yaW4yj4Mf45mfg2v899g451k576');                // 與 UCenter 的通訊金鑰, 要與 UCenter 保持一致
define('UC_API', 'http://zd1.t/ucenter/ucenter');    // UCenter 的 URL 地址, 在呼叫頭像時依賴此常量
define('UC_CHARSET', 'utf-8');                // UCenter 的字符集
define('UC_IP', '');                    // UCenter 的 IP, 當 UC_CONNECT 為非 mysql 方式時, 並且當前應用伺服器解析域名有問題時, 請設定此值
define('UC_APPID', 1);                    // 當前應用的 ID
define('UC_PPP', '20');
//ucexample_2.php 用到的應用程式資料庫連線引數
$dbhost = 'localhost';            // 資料庫伺服器
$dbuser = 'root';            // 資料庫使用者名稱
$dbpw = 'root';                // 資料庫密碼
$dbname = 'ucenter';            // 資料庫名
$pconnect = 0;                // 資料庫持久連線 0=關閉, 1=開啟
$tablepre = 'example_';           // 表名字首, 同一資料庫安裝多個論壇請修改此處
$dbcharset = 'utf8';            // MySQL 字符集, 可選 'gbk', 'big5', 'utf8', 'latin1', 留空為按照論壇字符集設定

//同步登入 Cookie 設定
$cookiedomain = '';             // cookie 作用域
$cookiepath = '/';            // cookie 作用路徑

這裡根據自己的資料庫名稱和資料庫修改。

然後在你的api/uc.php目錄下define('IN_DISCUZ', TRUE);的上面放入

define('UC_CONNECT', 'mysql');
define('UC_DBHOST', 'localhost');
define('UC_DBUSER', 'root');
define('UC_DBPW', 'root');
define('UC_DBNAME', 'ucenter');
define('UC_DBCHARSET', 'utf-8');
define('UC_DBTABLEPRE', '`ucenter`.uc_');
define('UC_DBCONNECT', '0');
define('UC_KEY', 'yeN3g9EsNfiaYfodV63dI1j8Fbkssk5HaL7W4yaW4yj4Mf45mfg2v899g451k576');	// 與 UCenter 的通訊金鑰, 要與 UCenter 保持一致
define('UC_API', 'http://zd1.t/mvc/uc_server'); // UCenter 的 URL 地址, 在呼叫頭像時依賴此常量
define('UC_CHARSET', 'utf-8');				// UCenter 的字符集
define('UC_IP', '127.0.0.1');				// UCenter 的 IP, 當 UC_CONNECT 為非 mysql 方式時, 並且當前應用伺服器解析域名有問題時, 請設定此值
define('UC_APPID', '1');				// 當前應用的 ID
define('UC_PPP', '20');
上面的配置根據自己的網站域名自己配置一下。

接下來登入進入你的ucenter,建議新增一個會員admin 不然沒法做同步登入,沒使用者。

通訊是很重要的,如果不通訊的話,web1網站通訊不到你的ucenter 那麼你的web2網站也沒有資料去給他同步登入。


這兩個網站呢 就是我做同步登入的兩個網站。 進入編輯

這麼弄的話 通訊就成功了。 那麼通訊成功後實現同步登入、同步退出

include_once "./config.inc.php"; 
include_once "./uc_client/client.php";
<pre>list($uid, $username, $password, $email) = uc_user_login($_POST['username'], $_POST['password']);
if($uid > 0) {
	echo '登入成功';
	echo uc_user_synlogin($uid);
} elseif($uid == -1) {
	echo '使用者不存在,或者被刪除';
} elseif($uid == -2) {
	echo '密碼錯';
} else {
	echo '未定義';
}

這裡的uc_user_login在你的uc_client/client.php中 這個函式驗證登入。驗證成功的話返回相對應的值。 可以看看ucenter手冊。地址http://www.phpddt.com/manual/ucenter/html/user.htm###

給你們貼個狀態碼圖好了


它返回的一個數組,鍵值0是你登入使用者的id 如果大於0的話就登入成功了。

同步退出的話手冊裡面也有 個人感覺手冊很好阿 寫的很詳細 可以多看看。

二話不說 繼續貼圖

退出的話直接echo uc_user_synlogout();就完事了。

同步登陸函式:uc_user_synlogin; 同步退出函式:uc_user_synlogout;

他這兩個函式呢 如果執行的話 他會執行一段js程式碼 你們可以去通訊成功那塊看一下 直接右鍵看原始碼點地址就可以了。 如果要看具體一些的話,這我就不說了 網上一大推。

相當於他執行這個js程式碼  去告訴每個應用中的uc.php “我登入了我退出了”;然後uc接收到資料 就將這個資料傳送給你的專案。 所以說每個應用你都得放一個uc.php去通訊。對吧

到這塊呢 基本已經能同步登入和退出了。 兩個專案進行同步登入退出的話  按照我這個流程從頭再來一遍就完事了。如果要深入理解的話 那就從網上找資料各種理解 各種去看程式碼吧  反正我是過來了  過程很難過 但是收穫很多 ~