UCenter單點登入/同步登入/同步登出執行個體_PHP教程

來源:互聯網
上載者:User
ucenter我想有不少朋友會用到了,就是一個會員同步功能了,我們經常會把幾個系統或不同論壇整合起來,下面我來給各位同學介紹一下。

UCenter同步流程:

前提是需要在Ucenter上面添加好需要同步登入的應用(至少2個才能看到效果),並且顯示:通訊成功

假如我添加了A,B兩個應用網站

1.首先當A站登入時,登入成功後,處理實質是調用uc_client提供的方法向UCenter擷取2個指令碼代碼(A、B站),這兩個指令碼代碼就是訪問A、B兩個站的api/uc.php中的登入方法,可以在方法中做登入所需session和cookie操作。

2.當登出時,操作和登入是一樣的,都需要向UCenter擷取2個指令碼代碼,目的是用來觸發A、B站的api/uc.php中登出方法。

重點:當擷取到2個指令碼代碼後一定需要在輸出讓瀏覽器運行,否則將不會實現同步登入登出。

建議:開發調試的時候,藉助瀏覽器監控來查看返回輸出值,我當時用的是chrome F12 後 開啟Network標籤 。

執行個體詳解

所謂單點登入,無非就是幾個網站共用一個使用者中心,實現同步登陸,同步退出。

伺服器端:Loog SSO

客服端: ucenter,說實話dz商業化確實讓php發展了不少。

ucenter 基本原理:

其實最終還是 使用者去登入 只是採用了ajax 使用者不會發現。

我們來看看和ucenter的具體程式:

config.php [PHP代碼]:

代碼如下 複製代碼

define(‘UC_CONNECT’, ’mysql’); // 串連 UCenter 的方式: mysql/NULL, 預設為空白時為fscoketopen()

//資料庫相關 (mysql 串連時, 並且沒有設定 UC_DBLINK 時, 需要配置以下變數)
define(‘UC_DBHOST’, ’localhost’); // UCenter 資料庫主機
define(‘UC_DBUSER’, ’root’); // UCenter 資料庫使用者名稱
define(‘UC_DBPW’, ’123′); // UCenter 資料庫密碼
define(‘UC_DBNAME’, ’ucenter’); // UCenter 資料庫名稱
define(‘UC_DBCHARSET’, ’utf8′); // UCenter 資料庫字元集
define(‘UC_DBTABLEPRE’, ’ucenter.uc_’); // UCenter 資料庫表首碼
define(‘UC_KEY’, ’safefewfef’); // 與 UCenter 的通訊密鑰, 要與 UCenter 保持一致
define(‘UC_API’, ’http://www.bKjia.c0m/uc’);// UCenter 的 URL 地址, 在調用頭像時依賴此常量
define(‘UC_CHARSET’, ’utf-8′); // UCenter 的字元集
define(‘UC_IP’, ’127.0.0.1′); // UCenter 的 IP, 當 UC_CONNECT 為非 mysql 方式時, 並且當前應用伺服器解析網域名稱有問題時, 請設定此值
define(‘UC_APPID’, ’3′); // 對應到ucenter當前應用的 ID
define(‘UCDOMAIN’,'http://www.bKjia.c0m/’); // 網域名稱設定

//一些 Cookie 設定
$_UC = array();
$_UC["cookiedomain"] = ”; // cookie 範圍
$_UC["cookiepath"] = ’/'; // cookie 作用路徑
$_UC["cookiepre"] = ’uc_’; // cookie 首碼
$_UC["cookietime"] = ’31536000′; //cookie 作用時間

設定檔寫好後,到ucenter後台裡面添加一個應用記住是自訂的 ‘UC_KEY’必須和config.php裡面相同

接下來就是你的主目錄下的api/uc.php

例如應用url 填寫為 http://www.bKjia.c0m 那麼我就有對應的http://www.bKjia.c0m/api/uc.php

如果要自訂的話 請確認你的對應關係。

最重要的就是api/uc.php ,同步登入就是訪問各個應用的uc.php 關於這個dz已經給了demo

[PHP代碼]:

代碼如下 複製代碼
define(‘API_DELETEUSER’,0); //note 使用者刪除 API 介面開關
define(‘API_RENAMEUSER’, 0); //note 使用者改名 API 介面開關
define(‘API_GETTAG’, 0); //note 擷取標籤 API 介面開關
define(‘API_SYNLOGIN’, 1); //note 同步登入 API 介面開關
define(‘API_SYNLOGOUT’, 1); //note 同步登出 API 介面開關
define(‘API_UPDATEPW’, 0); //note 更改使用者密碼 開關
define(‘API_UPDATEBADWORDS’, 0); //note 更新關鍵字列表 開關
define(‘API_UPDATEHOSTS’, 0); //note 更新網域名解析緩衝 開關
define(‘API_UPDATEAPPS’, 0); //note 更新應用列表 開關
define(‘API_UPDATECLIENT’, 0); //note 更新用戶端緩衝 開關
define(‘API_UPDATECREDIT’, 0); //note 更新使用者積分 開關
define(‘API_GETCREDITSETTINGS’, 0); //note 向 UCenter 提供積分設定 開關
define(‘API_GETCREDIT’,0); //note 擷取使用者的某項積分 開關
define(‘API_UPDATECREDITSETTINGS’, 0); //note 更新應用積分設定 開關

這些參數都是向別的應用提供的功能開關

最後關於 自己的頁面如何同步登入 別的應用

[PHP代碼]:

代碼如下 複製代碼

include_once ’../config.php’;
include_once ’../uc_client/client.php’;

你的驗證登入部分

代碼如下 複製代碼
list($uid, $username, $password) = uc_user_login($_POST[username], $_POST[password]);//進入ucenter驗證
$ucsynlogin = uc_user_synlogin($uid);//同步登入
echo $ucsynlogin;//因為是ajax 要echo

只用php,康盛的解決方案是比較不錯的了,而且利用了p3p頭實現了 不同網域名稱 單點登入

缺點就是採用ajax 客服端請求 ,如果有10個以上應用,登入速度就慢下來了,這時候就可以考慮下七夜的Loong SSO

瞭解了以上的東東 php的CMS和ucenter通訊 就不難了。

http://www.bkjia.com/PHPjc/632783.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632783.htmlTechArticleucenter我想有不少朋友會用到了,就是一個會員同步功能了,我們經常會把幾個系統或不同論壇整合起來,下面我來給各位同學介紹一下。...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.