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