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

基於 MySQL 的 BBS 設計系列(三):用戶模組詳細設計

     編輯:PHP 相關知識

用戶模組類別結構

採用 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);
};

設計考量

  • 函數實作:皆為執行對應 SQL 語句,難度不高。
  • 權限檢查層級:
    • 放在模組層(特權指令自帶檢查)→ 程式碼清晰、封裝性好,但可能重複檢查。
    • 放在服務層統一檢查 → 程式碼精簡、集中控制,但模組層失去自主防護。
    • 作者傾向視專案規模與團隊習慣決定,並考慮高併發下的效能影響。
  • 狀態變數:myuserid 等私有成員用於追蹤當前會話上下文,減少重複傳參。

資料庫互動

底層直接呼叫 MySQL C API(mysql_query, mysql_store_result 等),需自行處理連線池、錯誤重試、預處理語句防注入(當時尚未普及)。

現代化建議

  • 改用 PDO / MySQLi + 預處理語句。
  • 引入 Repository 模式分離資料存取邏輯。
  • 權限採用 RBAC 模型,於中介層統一攔截驗證。
  • 密碼儲存必須使用 password_hash() / password_verify()。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved