本文定義用戶管理與版面管理兩大核心模塊的 C++ 類接口,採用 MySQL C API 底層實現,向上提供清晰業務接口,涵蓋用戶全生命周期、版面分類體系、文章分塊存儲、權限檢查分層策略。
class UserManage {
private:
char myuserid[20]; // 當前登入用戶 ID
time_t logintime; // 登入時間
char loginhost[20]; // 登入來源
public:
// 普通用戶接口
int NewUser(const char* userid, const char* passwd);
int UserLogin(const char* userid, const char* passwd);
int ChangePasswd(const char* oldpasswd, const char* newpasswd);
int ChangePriData(const char* newname, const char* newemail, const char* newaddr);
int UserLogout(); // 更新 lastlogin、staytime、loginhost
// 信息查詢
int QueryCommonData(const char* userid, int& loginnum,
char* username, int& postnum,
time_t& lastlogin, char* lasthost);
int QueryPriData(const char* userid, char* email, char* addr); // 權限控制
// 管理員特權接口
int ModifyUserLevel(bool isAdd, unsigned long level);
int ModifyUserId(const char* oldid, const char* newid);
int ModifyUserData(const char* userid, const char* newname,
const char* newemail, const char* newaddr);
int ModifyUserNumdata(const char* userid, int addlogin, int addpost);
int ModifyUserPasswd(const char* userid, const char* newpasswd);
};
class BoardManage {
public:
// 分類操作
int GetClassNameInfo(int maxclass, char** classid, char** classname);
int GetBoardName(int maxboards, const char* classid, char** boardname);
int NewClass(const char* newclassname, int type); // 普通/特殊分類
int DeleteClass(const char* classname); // 不級聯,上層處理關聯
int AddClassBoard(const char* classname, const char* boardname);
int DeleteClassBoard(const char* classname, const char* boardname);
// 版面信息
int NewBoard(const char* boardid, const char* boardname); // 建表
int DeleteBoard(const char* boardid); // 刪表
int GetBoardInfo(const char* boardid, char* boardname,
int& numposts, char* masters, char* class, long& level);
int ModifyBoardId(const char* oldid, const char* newid); // 改表名
int ModifyBoardInfo(const char* boardid, const char* boardname,
int numposts, char* masters, char* class, long level);
// 文章操作(內部自動分塊 2KB)
int AddText(const char* boardid, const char* title,
const char* writer, const char* text);
int DeleteText(const char* boardid, int num); // 標記刪除
int FlushTable(const char* boardid); // 物理清理已刪文章
int MarkText(const char* boardid, int num, char mark); // 精華/鎖定等標記
int ModifyTitle(const char* boardid, int num, const char* newtitle);
int ModifyText(const char* boardid, int num, const char* newtext); // 權檢
int GetTextInfo(const char* boardid, int num,
char* title, char* writer, char& mark);
int GetText(const char* boardid, int num, int block, char* text); // 分塊讀取
// 搜索
int QueryWriter(const char* boardid, const char* writer, char** result);
int QueryTitle(const char* boardid, const char* title, char** result);
};
AddText| 層級 | 檢查內容 | 說明 |
|---|---|---|
| 服務層 | 菜單顯示控制、指令分發攔截 | cq66/telnet 客戶端不發送無權限指令菜單 |
| 功能層 | 特權接口內部二次驗證 | ModifyUserLevel 等管理員接口強制校驗 |
| 存儲層 | 無業務權限感知 | 純 SQL 執行,依賴上層保證 |