對付摳門的空間服務商,以前大家想到了用連結資料表的方法存放更大的資料庫。現在再給大家講另一個方法:用一個論壇的程式碼來執行兩個論壇程式。這樣可以繞開那些以伺服器CPU佔用率過大為理由,不准在一個空間架設兩套論壇程序的空間服務規定。
一、準備資料庫網路上主流的ASP論壇程式(例如動網論壇6.1)大都是以Access資料庫為基礎的。論壇的全部貼文、使用者資訊、論壇設定等等都存放在一個資料庫檔案中。我們需要準備兩個論壇資料庫文件,然後讓論壇程式根據不同的條件開啟不同的資料庫文件。
將本機的論壇上傳到伺服器,然後準備兩個資料庫分別命名為bbs1.mdb和bbs2.mdb(為了確保論壇的安全,檔案名稱可以改得複雜一些),並上傳到伺服器的/abc/bbs/ data/目錄下。資料庫既可以使用已有論壇的,也可以用論壇的初始資料庫。
二、判定條件用作判定進入論壇的條件很多,例如來訪者的IP位址、作業系統、訪問論壇的時間等。這裡筆者用的是來訪者提交的URL位址。
一個論壇有可能出現兩個不同的地址,例如“www.cpcw.com”和“WWW.CPCW.COM”,兩個網址雖然都指向電腦報網站,但在VbScript看來它們是兩個不同的ASCII字串,因為大小寫字母被認定為不同的字元。所以,大小寫不同的兩個位址可以做判定的條件。
Request.ServerVariables是取得環境變數的ASP內建物件。用程式碼Request.ServerVariables("SCRIPT_NAME")的值就是目前執行的ASP頁面的路徑。例如,當造訪http://www.scat.com/aBc/test.asp (注意大小寫!)時,Request.ServerVariables("SCRIPT_NAME")的值是:「/aBc/test.asp」。
我們規定兩個論壇的地址分別為http://www.scat.com/ABC/bbs和http://www.scat.com/abc/bbs 。其實可以用這種方法打開兩個以上的論壇,因為從排列組合的角度來看,長度為n的一個URL的大小寫組合可以有2的n次方種!
三、修改論壇程式現在大多數的ASP論壇程式為了程式方便,開啟資料庫物件的程式碼都獨立出來放在conn.asp中,其他頁面都透過引用這個檔案來存取資料庫。這樣為我們接下來的操作提供了方便。
用文字編輯器開啟conn.asp,找到如下程式碼:
Dim Db
'免費使用者第一次使用請修改本處資料庫位址......
DB="datadvbbs6.mdb"
程式定義了Db這個變量,資料庫的相對位址被賦給了這個字串變數。稍後程式開啟資料庫物件的時候會用到這個變數的值。
我們把這幾行改成:
Dim Db
Dim Whichbbs
Whichbbs =Request.ServerVariables("SCRIPT_NAME ")
if left(Whichbbs,4)="/ABC" then '使用取左函數截取需要長度的字串進行驗證
Db= "/data/bbs1.mdb"
else
Db="/data/bbs2.mdb"
end if
這段程式碼的意思就是,將訪客提交的地址賦值到Whichbbs這個變數中。由於訪客在論壇中活動時,URL位址的後半段是變化的,所以只用Whichbbs的前4位元與「/ABC」這個字串做比較。如果兩個字串相同,就給Db賦值"/data/bbs1.mdb";否則Db被賦值"/data/bbs2.mdb"。然後將會開啟Db對應的資料庫。訪客提交的地址如果是http://asp2.6to23.com/ABC ,則論壇系統打開bbs1.mdb的資料庫,讓訪客進入bbs1.mdb中的論壇;否則打開bbs2.mdb,進入bbs2.mdb中的論壇。
這樣,你就可以在一個空間中架設不只一個論壇了,而伺服器的資源佔用又比單獨架設兩套獨立的論壇系統的方法小很多。
這個方法還可以推廣開來:
1.應用到其他涉及資料庫操作的ASP程式上,例如新聞系統、下載系統、留言板、計數器等等。
2.用訪客IP位址做判定條件(Request.ServerVariables("REMOTE_ADDR")),做成變相的、更隱蔽的IP過濾,讓不受歡迎的人不知不覺地被隔離在真正的論壇之外。
3. 根據自己的需要,用其他資訊作判定條件,打造你富有個性、多采多姿的論壇。