FoosunCMS-数据库设置到虚拟目录外的方法

来自站长百科
跳转至: 导航、​ 搜索

导航:返回上一页

FoosunCMS -数据库设置到虚拟目录外的方法


FoosunCMS的功能很大,但不知道大家有没有遇到这个问题?

现在许多虚拟空间都提供了专用数据库防下目录,但这个目录一般在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 
Select Case UCase(Way)
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 这个文件

在第一行增加代码

在文件 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的程序。




参考来源[ ]