獨立系統需共用 Discuz 論壇的登入狀態,獲取當前用戶的 UID、用戶名、用戶組等資訊。
<?php
// 1. 引入 Discuz 核心初始化檔案(路徑依實際安裝位置調整)
include_once("../discuz/include/common.inc.php");
// 2. 建立用戶資訊陣列
$CTDF_USERINFO = array();
$CTDF_USERINFO["sid"] = $sid; // Session ID
$CTDF_USERINFO["uid"] = $discuz_uid; // 用戶 UID
$CTDF_USERINFO["user"] = $discuz_user; // 用戶名
// 3. 處理遊客狀態
if ($discuz_uid == 0) {
$CTDF_USERINFO["user"] = "guest_" . $sid;
}
$CTDF_USERINFO["groupid"] = $groupid; // 用戶組 ID
// 4. 【關鍵】清理 Discuz 全域變數,避免污染自身系統命名空間
$reserved_arr = array(
"GLOBALS", "_POST", "_GET", "_COOKIE", "_FILES",
"_SERVER", "_ENV", "_REQUEST",
"CTDF_USERINFO", "reserved_arr"
);
foreach ($GLOBALS as $key => $value) {
if (!in_array($key, $reserved_arr)) {
unset($GLOBALS[$key]);
}
}
unset($reserved_arr, $value);
// 現在可安全使用 $CTDF_USERINFO['uid']、$CTDF_USERINFO['user'] 等
?>
| 變數 | 說明 |
|---|---|
| $discuz_uid | 當前登入用戶 UID,遊客為 0 |
| $discuz_user | 當前登入用戶名 |
| $groupid | 用戶組 ID |
| $sid | Session ID |