採用 C++ 風格偽碼定義 UserManage 類,封裝 MySQL C API 呼叫,對上層提供介面。
Class UserManage {
private:
char myuserid[20]; // 當前登入用戶 ID,未登入為空
time logintime; // 登入時間,用於計算停留時長
char loginhost[20]; // 登入來源主機
public:
// 一般指令
int NewUser(char *userid, char *passwd);
int UserLogin(char *userid, char *passwd);
int ChangePasswd(char *oldpasswd, char *newpasswd);
int ChangePriData(char *newname, char *newemail, char *newaddr);
int ModifyNumData(int addlogin, int addpost);
int UserLogout();
// 一般查詢
int QueryCommonData(const char *userid, int &loginnum,
char *username, int &postnum,
time &lastlogin, char *lasthost);
// 特權指令(含權限檢查)
int QueryPriData(const char *userid, char *email, char *addr);
int ModifyUserLevel(BOOL isAdd, unsigned long level);
int ModifyUserId(char *oldid, char *newid);
int ModifyUserData(char *userid, char *newname, char *newemail, char *newaddr);
int ModifyUserNumdata(char *userid, int addlogin, int addpost);
int ModifyUserPasswd(char *userid, char *newpasswd);
};
myuserid 等私有成員用於追蹤當前會話上下文,減少重複傳參。底層直接呼叫 MySQL C API(mysql_query, mysql_store_result 等),需自行處理連線池、錯誤重試、預處理語句防注入(當時尚未普及)。
password_hash() / password_verify()。