利用ASP的檔案操作實現使用者管理

來源:互聯網
上載者:User
使用者管理 簡單、好用、開發效率高等等是ASP的優點,但是其系統操作方面如檔案操作
等則 是比較微弱的。要想實現這方面的功能,只有採取調用組件的辦法。
FileSystemObject對象就是一個例子。ASP安裝後,該對象就在系統中註冊了。
不過其功能也非常一般,只能操作文本類型的檔案。不過也可以滿足我們的一些
需要了。前幾天我的一個同事的一個朋友在網上申請了一個支援ASP的空間,想
實現諸如使用者註冊、資訊修改、使用者登出等功能,又不想用資料庫來實現,因為
要進行一大堆的設定。其實利用FileSystemObject操作文字檔就可以實現。
實現的思路是:為每項資訊建立一個文字檔,如姓名、性別、年齡等。所
有使用者的同一個資訊項都儲存在相對應的檔案中。如每個使用者的姓名資訊都儲存
在姓名檔案中。並且每個使用者的資訊都以特殊的標誌開始和結束,讀取資訊時就
根據這些標誌進行定位。例如開始標誌用“`使用者名稱`” ,結束標誌用“`e`”。
只要不是常用的字串,就可以作為定位的標誌。另外,還有兩個檔案是必不可
少的:那就是使用者名稱、密碼檔案。判斷使用者是否存在、使用者登陸等就是利用這兩
個檔案實現的。下面介紹的就是本人的具體實現代碼。
在程式編寫前我先搞了搞了一個公用的函數單元fun.inc,這裡面是一些比較
通用的函數,供其它的ASP檔案包含並調用。
首先是些使用者資訊的函數,包括使用者名稱、檔案名稱、使用者資訊三個參數,都是
字串類型,其中使用者資訊還可以是多行。代碼如下:

Sub WriteUser(UserName,FileName,UserInfo)
Dim fs, f
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.FileExists(FileName) = False Then
fs.CreateTextFile (FileName)
End If
'以添加方式開啟檔案
Set f = fs.OpenTextFile(FileName, 8)
'使用者資訊開始標誌
f.WriteLine ("`" & UserName & "`")
f.WriteLine (UserInfo)
'使用者資訊結束標誌
f.WriteLine ("`e`")

f.Close
Set f = Nothing
Set fs = Nothing
End Sub

讀使用者資訊的函數只需要兩個參數:使用者名稱和檔案名稱,使用者的資訊作為函數
的傳回值,實現的思路就是尋找開始、結束標誌,並把它們之間的資訊返回。代
碼如下:

Function ReadUser(UserName,FileName)
Dim i
Dim s
Dim ret
Dim fs, f

Set fs = CreateObject("Scripting.FileSystemObject")
if fs.FileExists(FileName)=false then
Set fs=Nothing
ReadUser=""
Exit Function
end if
'以唯讀方式開啟檔案
Set f = fs.OpenTextFile(FileName, 1)

Do While f.AtEndOfStream <> True
s = f.ReadLine
If s = "`" & UserName & "`" Then
s = f.ReadLine
ret=""
Do While s <> "`e`"
if ret="" then
ret = ret + s
else
ret = ret + Chr(13) & Chr(10)+s
end if
s = f.ReadLine
Loop
Exit Do
End If
Loop

f.Close
Set f = Nothing
Set fs = Nothing
ReadUser = ret
End Function

下面是刪除使用者資訊的函數,同樣包括使用者名稱和檔案名稱兩個參數。程式逐行
讀取對應檔案,如果其它使用者的資訊,則儲存在一個字串變數中,否則不進行
儲存,然後用變數的內容重寫該檔案。代碼如下:

Sub DeleteUser(UserName,FileName)
Dim i
Dim s
Dim tmp
Dim fs, f

Set fs = CreateObject("Scripting.FileSystemObject")
if fs.FileExists(FileName)=false then
Set fs=Nothing
Exit Sub
end if
Set f = fs.OpenTextFile(FileName, 1)
tmp=""
Do While f.AtEndOfStream <> True
s = f.ReadLine
If s <> "`" & UserName & "`" Then
if tmp="" then
tmp = tmp + s
else
tmp = tmp + Chr(13) & Chr(10)+ s
end if
Else
Do While s <> "`e`"
s = f.ReadLine
Loop
End If
Loop

f.Close
Set f = fs.CreateTextFile(FileName, True)
f.WriteLine tmp

f.Close
Set f = Nothing
Set fs = Nothing
End Sub

修改使用者資訊函數和寫使用者資訊函數一樣,帶有使用者名稱、檔案名稱、使用者資訊
三個參數,只不過該函數的使用者資訊是更新後的資訊。程式的實現和刪除使用者的
過程差不多,刪除使用者不儲存要刪除使用者的資訊到變數,修改使用者則把更新後信
息儲存到變數中代替原來的資訊。代碼如下:

Sub ModifyUser(UserName,FileName,NewUserInfo)
Dim i
Dim s
Dim tmp
Dim fs, f

Set fs = CreateObject("Scripting.FileSystemObject")
if fs.FileExists(FileName)=false then
Set fs=Nothing
Exit Sub
end if
Set f = fs.OpenTextFile(FileName, 1)
tmp=""
Do While f.AtEndOfStream <> True
s = f.ReadLine
If s <> "`" & UserName & "`" Then
if tmp="" then
tmp = tmp + s
else
tmp = tmp + Chr(13) & Chr(10)+ s
end if
Else
Do While s <> "`e`"
s = f.ReadLine
Loop
if tmp="" then
tmp = tmp + "`" & UserName & "`"
else
tmp = tmp + Chr(13) & Chr(10)+ "`" & UserName & "`"
end if
tmp = tmp + Chr(13) & Chr(10)+ NewUserI



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.