- 積分
- 21673
- 威望
- 21673
- 金錢
- 21910
- 最後登錄
- 2024-11-24
|
論壇會員庫結構和修改方法: 返回上一頁
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$addjy\t$meili\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
$useradd7\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 瀏覽次數
$addjy 附加經驗數
$meili 附加魅力數
$mymoney 附加金現金
$postdel 文章被刪除數
$sex 性別(m=帥哥、f=美女、no=保密)
$education 教育狀況
$marry 婚否
$work 職業
$born 生日(格式:年/月/日,其中年份為4位數字,月份和日為2位數字)
$chatlevel 聊天室級別(目前尚未使用)
$chattime 聊天室停留時間(目前尚未使用)
$jhmp 江湖門派
$jhcount 會員精華文章個數
$ebankdata 銀行相關資料
$onlinetime 會員在線時間
$userquestion 取回密碼要問的問題和答案(格式:問題|答案,中間是用"|"符號隔開的)
$awards 會員獎章
$useradd7 保留,未使用
$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); # 給會員加 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 ,成功 |
-
1
評分人數
-
|