用一套論壇程序架設多個(gè)論壇
作者:Iasky | 文章出處:未知 | 閱讀次數:400 | 發(fā)布日期:2005-03-27
對付摳門(mén)的空間服務(wù)商,以前大家想到了用鏈接數據表的方法存放更大的數據庫?,F在再給大家講述另一個(gè)方法:用一個(gè)論壇的代碼運行兩個(gè)論壇程序。這樣可以繞開(kāi)那些以服務(wù)器CPU占用率過(guò)大為理由,不許在一個(gè)空間架設兩套論壇程序的空間服務(wù)規定。
一、準備數據庫
網(wǎng)上主流的ASP論壇程序(例如動(dòng)網(wǎng)論壇6.1)大都是以Access數據庫為基礎的。論壇的全部帖子、用戶(hù)信息、論壇設置等等都存放在一個(gè)數據庫文件中。我們需要準備兩個(gè)論壇數據庫文件,然后讓論壇程序根據不同的條件打開(kāi)不同的數據庫文件。
將本地機的論壇上傳到服務(wù)器,然后準備兩個(gè)數據庫分別命名為bbs1.mdb和bbs2.mdb(為了保證論壇的安全,文件名可以改得復雜一些),并上傳到服務(wù)器的/abc/bbs/data/目錄下。數據庫既可以使用已有論壇的,也可以用論壇的初始數據庫。
二、判定條件
用作判定進(jìn)入論壇的條件有很多,比如來(lái)訪(fǎng)者的IP地址、操作系統、訪(fǎng)問(wèn)論壇的時(shí)間等。這里筆者用的是來(lái)訪(fǎng)者提交的URL地址。
一個(gè)論壇有可能出現兩個(gè)不同的地址,例如“www.cpcw.com”和“WWW.CPCW.COM”,兩個(gè)網(wǎng)址雖然都指向電腦報網(wǎng)站,但在VbScript看來(lái)它們是兩個(gè)不同的ASCII字符串,因為大小寫(xiě)字母被認作不同的字符。所以,大小寫(xiě)不同的兩個(gè)地址可以做判定的條件。
Request.ServerVariables是獲取環(huán)境變量的ASP內置對象。用代碼Request.ServerVariables("SCRIPT_NAME")的值就是當前執行的ASP頁(yè)面的路徑。例如,訪(fǎng)問(wèn) 我們規定兩個(gè)論壇的地址分別為http://www.scat.com/ABC/bbs和http://www.scat.com/abc/bbs。其實(shí)可以用這種方法打開(kāi)兩個(gè)以上的論壇,因為從排列組合的角度來(lái)看,長(cháng)度為n的一個(gè)URL的大小寫(xiě)組合可以有2的n次方種! 三、修改論壇程序 用文本編輯器打開(kāi)conn.asp,找到如下代碼: Dim Db ‘免費用戶(hù)第一次使用請修改本處數據庫地址...... DB="\data\dvbbs6.mdb" 程序定義了Db這個(gè)變量,數據庫的相對地址被賦給了這個(gè)字符串變量。稍后程序打開(kāi)數據庫對象的時(shí)候會(huì )用到這個(gè)變量的值。 我們把這幾行改成: Dim Db Dim Whichbbs Whichbbs =Request.ServerVariables("SCRIPT_NAME ") if left(Whichbbs,4)="/ABC" then ‘使用取左函數截取需要長(cháng)度的字符串進(jìn)行驗證 Db="/data/bbs1.mdb" else Db="/data/bbs2.mdb" end if 這段代碼的意思就是,將訪(fǎng)問(wèn)者提交的地址賦值到Whichbbs這個(gè)變量中。由于訪(fǎng)問(wèn)者在論壇中活動(dòng)時(shí),URL地址的后半段是變化的,所以只用Whichbbs的前4位與“/ABC”這個(gè)字符串做比較。如果兩字符串相同,就給Db賦值"/data/bbs1.mdb";否則Db被賦值"/data/bbs2.mdb"。然后將會(huì )打開(kāi)Db對應的數據庫。訪(fǎng)問(wèn)者提交的地址如果是 3. 根據自己的需要,用其他信息作判定條件,打造你富有個(gè)性、多姿多彩的論壇。
現在大多數的ASP論壇程序為了編程方便,開(kāi)啟數據庫對象的代碼都被獨立出來(lái)放在conn.asp中,其他頁(yè)面都通過(guò)引用這個(gè)文件來(lái)訪(fǎng)問(wèn)數據庫。這樣為我們接下來(lái)的操作提供了方便。

