作者 主題: [解決][ASP] Global.asa 如何取得SESSION變數值,以便登入後,可以建立使用者資料夾?  (閱讀 3580 次)

0 會員 與 1 訪客 正在閱讀本文。

b7307024

  • 懷疑的國中生
  • **
  • 文章數: 43
    • 檢視個人資料
各位前輩好,日前有其他網友建議可以使用Global.asa的Session_OnStart及Session_OnEnd來處理匯出時建立使用者資料夾,登出後刪除使用者資料夾的動作,來完成我的目的。

目前我的狀況如下:
login.asp
代碼: [選擇]
session.timeout=1440
session("EMPLOYEECODE")=rs("EMPLOYEECODE")

Global.asa
代碼: [選擇]
<script language="vbscript" runat="server">
Sub Application_OnStart
Application("Fdr") = Server.MapPath("\export\")
End Sub

Sub Session_OnStart
Application("Fdr") = Application("Fdr") & "\" & session("EMPLOYEECODE")

Set fs = CreateObject("Scripting.FileSystemObject")
If  Not fs.FolderExists(Application("Fdr")) Then     
  fs.CreateFolder (Application("Fdr"))   
End If
End Sub
</script>

這樣並不會成功建立使用者工號的資料夾,但若是使用
代碼: [選擇]
Application("Fdr") = Application("Fdr") & "\test"
則會成功建立test資料夾,請問該如何在登入後可以建立使用者資料夾呢?

謝謝!
« 上次編輯: 2020-08-20 14:51 由 b7307024 »

b7307024

  • 懷疑的國中生
  • **
  • 文章數: 43
    • 檢視個人資料
後來我改為登入的時候建立使用者暫存資料夾
login.asp
代碼: [選擇]
Fdr = "\export\"&Session("EMPLOYEECODE")&""
If DeleteFolder(Fdr) = False Then
CreateFolder(Fdr)
Else
CreateFolder(Fdr)  '預防使用者關閉瀏覽器,導致暫存資料夾沒有正常被刪除,故先刪除舊資料,在建立新資料夾
End If     

然後登出logout.asp 或者 Session.Timeout 時,觸發Session_OnEnd刪除此資料夾
Global.asa
代碼: [選擇]
<script language="vbscript" runat="server">
Sub Application_OnStart
Application("Fdr") = Server.MapPath("\export\")
End Sub

Sub Session_OnEnd
Application.Lock
Fdr = Application("Fdr")& "\" & session("EMPLOYEECODE")
Application.UnLock

'刪除使用者暫存資料夾
Set Fso = Server.CreateObject("Scripting.FileSystemObject" )

If Fso.FolderExists(Fdr) Then '若資料夾存在,則刪除資料夾
Fso.Deletefolder Fdr,true 
End If

Set Fso = Nothing
End Sub
</script>

這樣就完成我要的功能了,謝謝各位前輩!