雷傲極酷超級論壇 LeoBBS X 說明文檔
.

論壇會員數據庫結構和修改方法:                                          返回上一頁

1. 會員數據庫存放位置
LeoBBS X 的會員檔案都是存放在 cgi-bin 目錄下的 membersXXXXXX 目錄(XXXXXX 是隨機安全字符串)內的 0 - 512 之間的一個數字子目錄中。
其中數字子目錄名是根據會員名稱的前兩個字符按照算法轉換而成的。

2. 會員數據庫檔案目錄規則
會員的檔案存在被分在了512個目錄中,為了確定某個會員檔案應該存放在什麼目錄下,需要用下面的程式段:
$namenumber = &getnamenumber($username);
這樣得到的 $namenumber 就是目錄名,要注意的是,其中的 $username 是已經經過下面第3點處理過的。

3. 會員數據庫檔案名規則
會員輸入的會員名稱必須經過簡單處理,主要是為了防止非法字符等問題。比如你
輸入的會員名稱儲存在變數 $username 中的話,那麼需要用下面程式來處理:
$username = &unHTML("$username")
$username =~ s/ /\_/g;
$username =~ tr/A-Z/a-z/;
這樣處理後的 $username 就是最終的會員檔案名。

4. 會員數據庫檔案名
檔案名為 經過處理的會員名稱.cgi,存放在相應的會員數據庫目錄中。

5. 會員數據庫檔案的內部結構
你打開一個會員數據庫檔案的時候,裡面的內容如下:
$membername\t$password\t$membertitle\t$membercode\t$numberofposts\t$emailaddress\t$showemail\t$ipaddress\t$homepage\t$oicqnumber\t
$icqnumber\t$location\t$interests\t$joineddate\t$lastpostdate\t$signature\t$timedifference\t$privateforums\t$useravatar\t$userflag\t
$userxz\t$usersx\t$personalavatar\t$personalwidth\t$personalheight\t$rating\t$lastgone\t$visitno\t$useradd04\t$useradd02\t$mymoney\t$postdel\t
$sex\t$education\t$marry\t$work\t$born\t$chatlevel\t$chattime\t$jhmp\t$jhcount\t$ebankdata\t$onlinetime\t$userquestion\t$awards\t
$jifen\t$userface\t$soccerdata\t$useradd5\t

會員數據庫檔案內的每個字段是由 \t (就是 tab 表格符)分割的,下面是每個字段的具體解鎖釋:
$membername     會員名稱(未處理過的)
$password       密碼(先經過 MD5 加密,然後在最前面新增 lEO 標誌字樣,長度為固頂定的35個位元組)
$membertitle    自定義頭銜(如果內容是 member 或者空的話表示無頭銜)
$membercode     會員類型(壇主:ad,總版主:smo,版主:mo,副版主:amo,認證會員:rz 和 rz1 rz2 ... rz5,普通會員:me,
                禁言會員:banned,屏蔽文章會員:masked)
$numberofposts  發文數(格式:主題數目|回覆數目,中間是用"|"符號隔開的)
$emailaddress   電子郵件地址
$showemail      是否准許在文章中顯示郵件地址(顯示:yes,不顯示:no,顯示為 MSN:msn,顯示為網易泡泡:popo)
$ipaddress      註冊時使用的 IP 地址
$homepage       主頁地址
$oicqnumber     QQ 號碼
$icqnumber      ICQ 號碼
$location       來自
$interests      自我簡介
$joineddate     註冊日期
$lastpostdate   最後發文(格式:最後發文時間%%%最後發佈的文章地址%%%最後發佈文章的標題)
$signature      簽名 (原始簽名和經過 LBCODE 轉換後的簽名用 aShDFSiod 隔開)
$timedifference 時區
$privateforums  私密區瀏覽權限
$useravatar     頭像(如果沒有,則內容為noavatar)
$userflag       國家名稱
$userxz         星座
$usersx         生肖
$personalavatar 自定義頭像
$personalwidth  頭像寬度
$personalheight 頭像高度
$rating         威望(最大預設是 5,可設定,最小 -5,如果是 -6,則無法發言)
$lastgone       最後瀏覽時間
$visitno        瀏覽次數
$useradd04      保留,未使用
$useradd02      保留,未使用
$mymoney        附加金錢數
$postdel        文章被刪除數
$sex            性別(m=帥哥、f=美女、no=保密)
$education      教育情況
$marry          婚否
$work           職業
$born           生日(格式:年/月/日,其中年份為4位數字,月份和日為2位數字)
$chatlevel      聊天室級別(目前尚未使用)
$chattime       聊天室停留時間(目前尚未使用)
$jhmp           江湖門派
$jhcount        會員精華文章個數
$ebankdata      銀行相關資料
$onlinetime     會員在線時間
$userquestion   取回密碼要問的問題和答案(格式:問題|答案,中間是用"|"符號隔開的)
$awards         會員獎章
$jifen          會員積分
$userface       虛擬形象
$soccerdata     體育彩票(預留給彩票外掛程式,官方版未使用)
$useradd5       保留,未使用
如果你需要製作某些特別的擴展功能,可以使用會員數據庫中的保留字段($chatlevel,$chattime也可以使用)!


6. 和會員數據庫有關的系統使用
你只需在你程式的開頭用下面命令包含部分必須的庫檔案,
    require "data/boardinfo.cgi";
    require "data/styles.cgi";
    require "data/cityinfo.cgi";
    require "bbs.lib.pl";
    require "plugin.lib.pl";
然後你可以直接使用下面的系統功能(不斷增加中)

a) &whosonline("$username\t外掛程式名\tnone\t功能名\t");
可以更新 $username 的最後登入時間,登入次數,並且在在線名單中顯示此會員在使用某外掛程式的某功能(外掛程式名和功能名可填寫一樣)
比如:
&whosonline("$username\t論壇銀行\tnone\t存款\t");

b) &getmember("$username",參數);
可以得到 $username 的所有資料,放置在5所示的變數中,如果執行後,$userregistered 的值為 "no",則表明沒有這個會員。
參數可以是 "no",這個是可選的,表明不鎖定,如果是僅僅讀會員,可以加上,如果得到的資料是需要寫回會員數據庫的,則千萬不要加。
參數可以是 "check",這個是可選的,表明僅僅用於檢查會員是否存在,不改變5中任何變數,返回 1 表明會員存在,返回 0 表明會員不存在。
比如:
&getmember("$username"); # 讀取 $username 這個會員的會員數目據
&getmember("$username","no"); # 讀取 $username 這個會員的會員數目據,不進行資料鎖定
&getmember("$username","check"); # 檢查 $username 這個會員是否存在

c) &updateuserinfo("$username",發文變化,回覆變化,威望變化,經驗變化,魅力變化,金錢變化,被刪除數變化,精華文章變化,在線時間變化,積分變化);
可以根據你寫的變化量更新 $username 會員的資料信息(注意:參數全部是變化量!如果不變化,相應參數就寫 0,但千萬不要缺少任何參數)
比如:
&updateuserinfo("$username",0,0,0,0,0,1000,0,0,0,0); # 給會員加 1000 元虛擬貨幣

d) &upinfodata( name => "要更改的會員名稱", emailaddress =>"改變後的值", showemail =>"改變後的值", ………… );
使用散列方式來更新會員檔案庫的任何字段。
注意: name 參數是必須的,其他參數根據需要修改的資料相應增減,程式忽略空白散列值和會員數據庫(上面5中的)不存在的散列變數。
   會員名稱字段是不能更新的,而密碼字段更新後會暫時變成明文。
比如:
&upinfodata( name => "$username", homepage =>"http://www.leobbs.com", icqnumber =>"123456789", ………… );
# 更新 $username 會員的主頁和 ICQ 號碼,其他資料不變。

c) 和 d) 函數都有返回值的,規定如下
# 返回 -1,沒有會員
# 返回 0 ,會員數目據有問題,寫入失敗
# 返回 1 ,成功

返 回



版權所有:雷傲科技 & 雷傲極酷超級論壇  Copyright 2003-2004