使用ASP的文件設(shè)置完成用戶管理
發(fā)表時間:2023-08-13 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]簡單、好用、開發(fā)效率高等等是ASP的優(yōu)點(diǎn),但是其系統(tǒng)操作方面如文件操作等則 是比較微弱的。要想實(shí)現(xiàn)這方面的功能,只有采取調(diào)用組件的辦法。FileSystemObject對象就是一個例子。ASP安裝后...
簡單、好用、開發(fā)效率高等等是ASP的優(yōu)點(diǎn),但是其系統(tǒng)操作方面如文件操作等則 是比較微弱的。要想實(shí)現(xiàn)這方面的功能,只有采取調(diào)用組件的辦法。
FileSystemObject對象就是一個例子。ASP安裝后,該對象就在系統(tǒng)中注冊了。
不過其功能也非常一般,只能操作文本類型的文件。不過也可以滿足我們的一些
需要了。前幾天我的一個同事的一個朋友在網(wǎng)上申請了一個支持ASP的空間,想
實(shí)現(xiàn)諸如用戶注冊、信息修改、用戶注銷等功能,又不想用數(shù)據(jù)庫來實(shí)現(xiàn),因?yàn)?br>要進(jìn)行一大堆的設(shè)置。其實(shí)利用FileSystemObject操作文本文件就可以實(shí)現(xiàn)。
實(shí)現(xiàn)的思路是:為每項(xiàng)信息建立一個文本文件,如姓名、性別、年齡等。所
有用戶的同一個信息項(xiàng)都保存在相對應(yīng)的文件中。如每個用戶的姓名信息都保存
在姓名文件中。并且每個用戶的信息都以特殊的標(biāo)志開始和結(jié)束,讀取信息時就
根據(jù)這些標(biāo)志進(jìn)行定位。例如開始標(biāo)志用“`用戶名`” ,結(jié)束標(biāo)志用“`e`”。
只要不是常用的字符串,就可以作為定位的標(biāo)志。另外,還有兩個文件是必不可
少的:那就是用戶名、密碼文件。判斷用戶是否存在、用戶登陸等就是利用這兩
個文件實(shí)現(xiàn)的。下面介紹的就是本人的具體實(shí)現(xiàn)代碼。
在程序編寫前我先搞了搞了一個公共的函數(shù)單元fun.inc,這里面是一些比較
通用的函數(shù),供其它的ASP文件包含并調(diào)用。
首先是些用戶信息的函數(shù),包括用戶名、文件名、用戶信息三個參數(shù),都是
字符串類型,其中用戶信息還可以是多行。代碼如下:
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)
'用戶信息開始標(biāo)志
f.WriteLine ("`" & UserName & "`")
f.WriteLine (UserInfo)
'用戶信息結(jié)束標(biāo)志
f.WriteLine ("`e`")
f.Close
Set f = Nothing
Set fs = Nothing
End Sub
讀用戶信息的函數(shù)只需要兩個參數(shù):用戶名和文件名,用戶的信息作為函數(shù)
的返回值,實(shí)現(xiàn)的思路就是尋找開始、結(jié)束標(biāo)志,并把它們之間的信息返回。代
碼如下:
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
下面是刪除用戶信息的函數(shù),同樣包括用戶名和文件名兩個參數(shù)。程序逐行
讀取對應(yīng)文件,如果其它用戶的信息,則保存在一個字符串變量中,否則不進(jìn)行
保存,然后用變量的內(nèi)容重寫該文件。代碼如下:
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
修改用戶信息函數(shù)和寫用戶信息函數(shù)一樣,帶有用戶名、文件名、用戶信息
三個參數(shù),只不過該函數(shù)的用戶信息是更新后的信息。程序的實(shí)現(xiàn)和刪除用戶的
過程差不多,刪除用戶不保存要刪除用戶的信息到變量,修改用戶則把更新后信
息保存到變量中代替原來的信息。代碼如下:
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)+ NewUserInfo
tmp = tmp + Chr(13) & Chr(10) + "`e`"
End If
Loop
f.Close
Set f = fs.CreateTextFile(FileName, True)
f.WriteLine tmp
f.Close
Set f = Nothing
Set fs = Nothing
End Sub
還有一個函數(shù)是用來判斷用戶是否存在,通過在保存用戶名的文件中進(jìn)行定
位來實(shí)現(xiàn),代碼如下:
Function UserExist(UserName,FileName)
Dim fs, f
Set fs = CreateObject("Scripting.FileSystemObject")
if fs.FileExists(FileName)=False then
Set fs=Nothing
UserExist=False
Exit Function
end if
Set f = fs.OpenTextFile(FileName, 1)
Do While f.AtEndOfStream <> True
s = f.ReadLine
If s = "`" & UserName & "`" Then
UserExist = True
Exit Function
End If
Loop
f.Close
Set f = Nothing
Set fs = Nothing
UserExist = False
End Function
下面就是一些文件的完整代碼,演示如何通過調(diào)用上面的函數(shù)來實(shí)現(xiàn)基
本的用戶管理:用戶注冊、用戶登陸、用戶修改、用戶刪除。僅供參考。程
序在Win2000 Professional+IIS調(diào)試通過。注意,文本文件都保存在當(dāng)前目
錄的子目錄“txt”下,如果沒有此目錄,請手工建立,程序?qū)崿F(xiàn)略。
'*********************fun.inc***************************************
<%
dim UserNmFile,UserPwdFile,NmFile,GenderFile,MmFile
UserNmFile="txt/UserName.txt"
UserPwdFile="txt/Password.txt"
NmFile="txt/Name.txt"
GenderFile="txt/Gender.txt"
MmFile="txt/Memo.txt"
UserNmFile=Server.MapPath(UserNmFile)
UserPwdFile=Server.MapPath(UserPwdFile)
NmFile=Server.MapPath(NmFile)
GenderFile=Server.MapPath(GenderFile)
MmFile=Server.MapPath(MmFile)
'////////////////////////////////////////////////////////
'寫用戶信息到文件
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)
'用戶信息開始標(biāo)志
f.WriteLine ("`" & UserName & "`")
f.WriteLine (UserInfo)
'用戶信息結(jié)束標(biāo)志
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)+ NewUserInfo
tmp = tmp + Chr(13) & Chr(10) + "`e`"
End If
Loop
f.Close
Set f = fs.CreateTextFile(FileName, True)
f.WriteLine tmp
f.Close
Set f = Nothing
Set fs = Nothing
End Sub
'判斷用戶是否已存在
Function UserExist(UserName,FileName)
Dim fs, f
Set fs = CreateObject("Scripting.FileSystemObject")
if fs.FileExists(FileName)=False then
Set fs=Nothing
UserExist=False
Exit Function
end if
Set f = fs.OpenTextFile(FileName, 1)
Do While f.AtEndOfStream <> True
s = f.ReadLine
If s = "`" & UserName & "`" Then
UserExist = True
Exit Function
End If
Loop
f.Close
Set f = Nothing
Set fs = Nothing
UserExist = False
End Function
%>
'********************index.htm*************************************
<html>
<body>
<a href="register.htm">用戶注冊 </a><br>
<a href="login.htm">用戶登陸 </a><br>
<a href="modify.htm">用戶修改 </a><br>
<a href="delete.htm">用戶刪除 </a><br>
</body>
</html>
'****************register.htm***************************************
<html>
<body>
用戶注冊
<form name="form1" method="post" action="regsubmit.asp">
<table border="0">
<tr>
<td width="28%">用戶名</td>
<td width="72%">
<input type="text" name="edtUserNm">
</td>
</tr>
<tr>
<td width="28%">密碼</td>
<td width="72%">
<input type="text" name="edtUserPwd">
</td>
</tr>
<tr>
<td width="28%">姓名</td>
<td width="72%">
<input type="text" name="edtNm">
</td>
</tr>
<tr>
<td width="28%">性別</td>
<td width="72%">
<input type="text" name="edtGender">
</td>
</tr>
<tr>
<td width="28%">簡歷</td>
<td width="72%">
<textarea name="edtMm"></textarea>
</td>
</tr>
<tr>
<td width="28%"> </td>
<td width="72%">
<input type="submit" name="Submit" value="提交">
</td>
</tr>
</table>
<p> </p>
</form>
</body>
</html>
'***************************regsubmit.asp**************************
<!--#include file="fun.inc"-->
<%
dim UserNm,UserPwd,Nm,Gender,Memo
UserNm=Request("edtUserNm")
UserPwd=Request("edtUserPwd")
Nm=Request("edtNm")
Gender=Request("edtGender")
Mm=Request("edtMm")
if trim(UserNm)="" then
Response.Write "用戶名不能為空"
Response.End
end if
'判斷用戶是否已存在
if UserExist(UserNm,UserNmFile) then
Response.Write "用戶已存在"
Response.End
end if
'寫用戶信息到各個文件
WriteUser UserNm,UserNmFile,UserNm
WriteUser UserNm,UserPwdFile,UserPwd
WriteUser UserNm,NmFile,Nm
WriteUser UserNm,GenderFile,Gender
WriteUser UserNm,MmFile,Mm
Response.Write "注冊成功,以下為注冊信息" & "<br><br>"
Response.Write "用戶名:" & UserNm & "<br>"
Response.Write "密碼:" & UserPwd & "<br>"
Response.Write "姓名:" & Nm & "<br>"
Response.Write "性別:" & Gender & "<br>"
Response.Write "簡歷:" & Mm
%>
<html>
<body>
</body>
</html>
'****************************login.htm************************
<html>
<body>
用戶登陸
<form name="form1" method="post" action="loginsubmit.asp">
<table border="0">
<tr>
<td width="28%">用戶名</td>
<td width="72%">
<input type="text" name="edtUserNm">
</td>
</tr>
<tr>
<td width="28%">密碼</td>
<td width="72%">
<input type="text" name="edtUserPwd">
</td>
</tr>
<tr>
<td width="28%"> </td>
<td width="72%">
<input type="submit" name="Submit" value="登陸">
</td>
</tr>
</table>
</form>
</body>
</html>
'****************************loginsubmit.asp**********************
<!--#include file="fun.inc"-->
<%
dim UserNm,UserPwd
UserNm=Request("edtUserNm")
UserPwd=Request("edtUserPwd")
'判斷用戶是否已存在
if UserExist(UserNm,UserNmFile)=False then
Response.Write "用戶名不存在"
Response.End
end if
dim SavePwd
SavePwd=ReadUser(UserNm,UserPwdFile)
if SavePwd<>UserPwd then
Response.Write "密碼錯誤"
Response.End
end if
Response.Write "登陸成功"
%>
<html>
<body>
</body>
</html>
'***************************modify.htm*****************************
<html>
<body>
用戶修改
<form name="form1" method="post" action="modifylist.asp">
<table border="0">
<tr>
<td width="28%">用戶名</td>
<td width="72%">
<input type="text" name="edtUserNm">
</td>
</tr>
<tr>
<td width="28%"> </td>
<td width="72%">
<input type="submit" name="Submit" value="調(diào)出信息">
</td>
</tr>
</table>
</form>
</body>
</html>
'**************************modifylist.asp****************************
<!--#include file="fun.inc"-->
<%
dim UserNm
UserNm=Request("edtUserNm")
'判斷用戶是否已存在
if UserExist(UserNm,UserNmFile)=False then
Response.Write "用戶名不存在"
Response.End
end if
dim UserPwd,Nm,Gender,Mm
UserPwd=ReadUser(UserNm,UserPwdFile)
Nm=ReadUser(UserNm,NmFile)
Gender=ReadUser(UserNm,GenderFile)
Mm=ReadUser(UserNm,MmFile)
%>
<html>
<body>
用戶信息修改
<form name="form1" method="post" action="modifysubmit.asp">
<table border="0">
<tr>
<td width="28%">用戶名</td>
<td width="72%">
<b><font color="#0000ff"><%Response.Write UserNm %></font></b>
<input type="hidden" name="edtUserNm" value=<%=UserNm %>>
</td>
</tr>
<tr>
<td width="28%">密碼</td>
<td width="72%">
<input type="text" name="edtUserPwd" value=<%=UserPwd %>>
</td>
</tr>
<tr>
<td width="28%">姓名</td>
<td width="72%">
<input type="text" name="edtNm" value=<%=Nm %>>
</td>
</tr>
<tr>
<td width="28%">性別</td>
<td width="72%">
<input type="text" name="edtGender" value=<%=Gender %>>
</td>
</tr>
<tr>
<td width="28%">簡歷</td>
<td width="72%">
<textarea name="edtMm"><%=Mm %></textarea>
</td>
</tr>
<tr>
<td width="28%"> </td>
<td width="72%">
<input type="submit" name="Submit" value="保存修改">
</td>
</tr>
</table>
<p> </p>
</form>
</body>
</html>
'********************************modifysubmit.asp*******************
<!--#include file="fun.inc"-->
<%
dim UserNm,UserPwd,Nm,Gender,Mm
UserNm=Request("edtUserNm")
UserPwd=Request("edtUserPwd")
Nm=Request("edtNm")
Gender=Request("edtGender")
Mm=Request("edtMm")
if trim(UserNm)="" then
Response.Write "用戶名不能為空"
Response.End
end if
'更新用戶信息到各個文件
ModifyUser UserNm,UserNmFile,UserNm
ModifyUser UserNm,UserPwdFile,UserPwd
ModifyUser UserNm,NmFile,Nm
ModifyUser UserNm,GenderFile,Gender
ModifyUser UserNm,MmFile,Mm
Response.Write "保存成功,以下為更新后的信息" & "<br><br>"
Response.Write "用戶名:" & UserNm & "<br>"
Response.Write "密碼:" & UserPwd & "<br>"
Response.Write "姓名:" & Nm & "<br>"
Response.Write "性別:" & Gender & "<br>"
Response.Write "簡歷:" & Mm
%>
<html>
<body>
</body>
</html>
'*************************delete.htm******************************
<html>
<body>
用戶刪除
<form name="form1" method="post" action="deletesubmit.asp">
<table border="0">
<tr>
<td width="28%">用戶名</td>
<td width="72%">
<input type="text" name="edtUserNm">
</td>
</tr>
<tr>
<td width="28%"> </td>
<td width="72%">
<input type="submit" name="Submit" value="刪除">
</td>
</tr>
</table>
</form>
</body>
</html>
'*******************************deletesubmit.asp********************
<!--#include file="fun.inc"-->
<%
dim UserNm
UserNm=Request("edtUserNm")
'判斷用戶是否已存在
if UserExist(UserNm,UserNmFile)=False then
Response.Write "用戶名不存在"
Response.End
end if
DeleteUser UserNm,UserNmFile
DeleteUser UserNm,UserPwdFile
DeleteUser UserNm,NmFile
DeleteUser UserNm,GenderFile
DeleteUser UserNm,MmFile
Response.Write "刪除成功"
%>
<html>
<body>
</body>
</html>
********************the end****************************