首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

CodeIgniter 整合 UCenter 1.6 實現雙向同步登入與通訊

     編輯:PHP 綜合知識

將 CodeIgniter 開發的子站點與既有論壇(如 Discuz!)透過 UCenter 實現用戶同步登入、註冊、登出等雙向通訊,是常見的整合需求。本文記錄核心整合步驟與程式碼封裝方式。

整合前置作業

  1. 安裝並配置好 UCenter 服務端;
  2. 在 UCenter 管理後台新增「其他」類型應用,取得生成的通訊配置代碼;
  3. 確保 UCenter 能正確請求子站的 /api/uc.php(或自定義路徑),這是雙向通訊的關鍵——UCenter 透過此端點向子站推送同步指令(如同步登出、刪除用戶等)。

目錄部署

將 UCenter 客戶端 SDK (uc_client) 複製至 CI 專案目錄(建議放於根目錄或 application/third_party)。若放於根目錄,UCenter 端配置的應用 URL 為 https://yourdomain.com/uc_client;若 api 目錄也在根目錄,則可省略 uc_client 路徑。

封裝 Library:libraries/Ucenter.php

<?php
class Ucenter {
    private $_uid;
    private $_username;

    public function __construct() {
        require_once FCPATH . './api/uc_client/config.inc.php';
        require_once FCPATH . './api/uc_client/client.php';
    }

    public function getUserId() {
        return $this->_uid;
    }

    public function getUserName() {
        return ucwords(strtolower($this->_username));
    }

    // 用戶登入驗證
    public function login($username, $password) {
        return uc_user_login($username, $password);
    }

    // 產生同步登入代碼(JS/iframe)
    public function synlogin($uid) {
        return uc_user_synlogin($uid);
    }

    // 同步登出
    public function login_out() {
        return uc_user_synlogout();
    }

    // 用戶註冊
    public function regediter($username, $password, $email) {
        return uc_user_register($username, $password, $email);
    }
}

擴充提示:uc_client/client.php 內定義了完整的 UCenter API 函數(如 uc_user_edit、uc_user_delete、uc_get_user 等),可根據需求在 Library 中繼續封裝對應方法。

控制器呼叫範例

$username = $this->input->post('username');
$password = $this->input->post('password');

$this->load->library('ucenter');
list($uid, $username, $password, $email) = $this->ucenter->login($username, $password);

if (!empty($uid)) {
    // 登入成功,產生同步登入代碼輸出至視圖
    $ucsynlogin = $this->ucenter->synlogin($uid);
    // 此處可將 $ucsynlogin 傳給視圖,在頁面執行 JS 完成多站點同步登入
}

關鍵注意事項

  • config.inc.php 中的 UC_API 必須正確指向 UCenter 服務端地址;
  • 通訊採用 UC_KEY 加密驗證,雙端金鑰必須一致;
  • 子站需實作 api/uc.php 接收 UCenter 推送的同步通知(如同步登出、刪除用戶),SDK 已內建處理邏輯,僅需確保路由可達;
  • 資料庫字元集建議統一為 UTF-8,避免中文用戶名亂碼。

透過 Library 封裝,將 UCenter 整合邏輯與業務控制器解耦,便於維護與擴展。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved