其實寫這幾篇代碼的時間不過近三天而已,事前即沒有經過詳細思考和計劃(可以說一點計劃都沒有)那天想起做個論壇試試,於是就做起來了,而我也是才接觸了將近一個月時間的PHP,以前也沒真正寫過程序之類的東東,在寫這段代碼的兩天半時間裡,有好幾次遇到困難,都想放棄,但是我還是寫出來了,而且沒想到居然能用,所以中間可能有很多隱患也說不清,雖然說是可以用了。
再過兩天,我就要去上班,也沒時間再仔細地從頭到尾檢查這些代碼了,這也是我放上來的原因之一,還有一個原因是,因為我想讓大家一起來看看這些字符,我只是個菜鳥,中間可能有很多捷徑沒走,也有可能有很多地方不對,而且近兩天我改了部份頁面的代碼,但其它相關的代碼沒去掉,所以有些地方有點重覆。但是它能正常運行,這是肯定的(至少表面上正常,我在WIN98/APACHE/PHP/MYSQL下用沒問題,在網上測試也沒問題,其它環境下就不知道了。我只希望和我一樣的菜鳥們,或是比我還菜的菜鳥們能從中得到些什麼,而那些老鳥及前輩們能來信或留言指出中間的缺點或不足的話,我會更高興。因為那樣的話,我也可從中學到不少東西。我的郵件地址是:
[email protected],OICQ:2289230,主頁地址是:http://lfox.oso.com.cn
好了,廢話說太多了,我希望大家能投入到修改這個論壇源代碼的工作中來,讓它成為中國人自己開發的免費論壇,讓論壇代碼成為許許多多像我一樣對PHP很感興趣而又感覺無從下手的朋友們手下的參考資料就行了。下面來看我的論壇吧!
首先介紹要用的兩個表存放貼子信息的foxbbs和存放用戶信息的useinfo,因為當初考慮到數據空間不是很大,所以選擇了MYSQL+TXT的方式來做,所有主題除了內容外都是存放在MYSQL裡的,而數據量相對較大的主題內容和回復內容都單獨存放擴展名為.FOX和.BBS的TXT格式文件裡,在表裡加個存放文件名的字段就行了,為了避免文件名重覆,取當前的系統時間來做文件名,比如2001年1月2日11時20分30秒發了一張帖子,文件名就是20010102112030.txt我想這能滿足絕大部分的要求了,因為可能沒幾個論壇會熱到每秒鐘都有兩張或兩張以上的新帖出現吧!呵呵……
此論壇的具體情況可見http://lfox.oso.com.cn/foxbbs/foxbbs.php,另外主頁面http://lfox.oso.com.cn/index.php上提供源碼打包下載,看了源代碼可別來搗亂哦。
useinfo 用戶信息表
0 usename varchar(8) not null 用戶名
1 usepass varchar(8) not null 密碼
2 useni varchar(30) not null 昵稱
3 useoicq varchar(12) not null
4 usesex int(1) not null 用戶性別
5 useage int(2) not null 用戶年齡
6 usezy varchar(4) not null 職業
7 useaddr varchar(20) not null 地址
8 usemail varchar(40) not null 郵箱
9 useweb varchar(50) not null 主頁
10 useqm varchar(240) not null 簽名
11 useattr int(1) not null 屬性 1用戶2版主3管理員4站長
12 useinf int(1) not null 是否公開信息 1否2是
13 useid int(5) not auto_increment primary key 用戶ID號
14 usebq int(1) not null 表情
15 regdate datetime; 注冊時間
16 enddate varchar(22) not null 最後到站時間
17 ftnum int(4) not null 發貼數
18 usety char(1) not null
foxbbs 論壇主題表
0 id int(5) not auto_increment primary key
1 usename varchar(20) NOT 發帖用戶名
2 ftbq int(1) not 表情
3 title varchar(40) not 主題
4 ftdate varchar(22) not 發帖時間
5 mesname varchar(15) not 內容文件名 20010102055635 我多了留一位,以防意外,其實十四位就足夠了。
6 djnum int(4) not 點擊數
7 hfnum int(3) not 回復數
8 hfdate varchar(24) not 最後回復時間
9 hfname varchar(20) not 回復文件名
10 hfusename varchar(20) not 最後回復人名
11 ip varchar(15)
12 lockes int 1
linkfox.inc.php連接數據庫用
<?
$dbhostname = "lfox";
$dbusername = "root";
$dbpassword = "root";
$dbName = "flyfox";
MYSQL_CONNECT($dbhostname, $dbusername, $dbpassword) OR DIE("Unable to connect to database");
@mysql_select_db( "$dbName") or die( "Unable to select database");
?>