3.1SP1-將風訊的數據庫設置到虛擬目錄外的方法_風訊Cms教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
本文討論區:http://bbs.foosun.net/dispbbs.asp?boardID=22&ID=16236&page=1
風訊的功能很大,但不知道大家有沒有碰到這個問題?
現在許多虛擬空間都提供了專用數據庫防下目錄,但這個目錄一般在WEB虛擬目錄之外,要用../的方式引用才可以。
為了安全,總想將數據庫放在虛擬目錄之外,但由于風訊使用相對于虛擬目錄的絕對路徑,
而使我們無法用 ../date 的方式引用虛擬目錄前的文件。本人為此寫了一個插件,此文件可將引用地址設置為相對于磁盤的絕對路徑引用。就是將目錄轉換為F:\xx\xx 的方式。
假設你的網站FTP目錄在F:\webroot\myfile
而你的WEB虛擬根目錄在myfile下的web文件里。在myfile下還有一個data目錄放一個名為data.mdb的數據庫文件。
下面為實現方法,
第一步、新建一個文件名為 VirtualPath.asp 文件內容如下:
<%
Function VirtualPath(Way,PathName,DelPath)
Dim MainPath,ArrayPath,Num,TempPath,i
Case "MAINPATH"
MainPath=Server.MapPath("\")&"\"
Case "FILEPATH"
MainPath=Request.ServerVariables("PATH_TRANSLATED")
Case Else
Response.Write "您輸入的參數有誤,第一個參數請輸入MainPath或FilePath。使用MainPath將以站點所在的虛擬目錄為參照截取;FilePath將以當前文件所在目錄為參照截取。"
Response.End
End Select
ArrayPath=Split(MainPath,"\")
Num=UBound(ArrayPath) IF DelPath<>"" Then
For i=0 to Num
IF UCase(ArrayPath(i))= UCase(DelPath) Then
Exit For
End IF
Next
IF i>Num Then
Response.Write "沒有您要截取的目錄,請檢查參數的正確性。也可設置為空,此時將使用全部目錄。"
Response.End
End IF
End IF TempPath=ArrayPath(0)
For i=1 to Num-1
IF UCase(ArrayPath(i))<>UCase(DelPath) Then
TempPath=TempPath & "\" & ArrayPath(i)
Else
Exit For
End IF
Next VirtualPath=TempPath Replace(PathName,"/","\")
End Function
%>
第二步、
將新建的文件 VirtualPath.asp 放在風訊的INC目錄里。找到風訊INC目錄下的 Cls_DB.asp 這個文件
在第一行增加代碼 <!--#include file="VirtualPath.asp" -->
在文件 Cls_DB.asp 里找到代碼 Server.MapPath(DataBaseConnectStr) 用下面的代碼代替
VirtualPath("mainpath",DataBaseConnectStr,"web") 到現在為止 大功告成。注重 VirtualPath 函數的幾個參數, 第一個參數可設置為 mainpath 或filepath 設置為 mainpath 則表示相對于站的WEW虛擬目錄
設置為 filepath 則表示相對于VirtualPath.asp文件的所在目錄。
第二個參數表示要設置的數庫地址
第二個參數表示要截取的目錄,例如 F:\webroot\web 假如如下設置的VirtualPath("mainpath","/data/data.mdb","web")
最終產生的路徑為 F:\webroot\data\data.mdb 現在你明白了嗎?此文件不僅可用于風訊,可以用于任何ASP Access的程序。 有愛好的朋友不妨在一起討論一下。
相關風訊Cms教程:
- 相關鏈接:
- 教程說明:
風訊Cms教程-3.1SP1-將風訊的數據庫設置到虛擬目錄外的方法
。