通常,我們在設計過(guò)程中會(huì )面臨三種情況:某一頁(yè)面只讓某一用戶(hù)瀏覽、某一頁(yè)面只讓某些用戶(hù)瀏覽和某些頁(yè)面只讓某些用戶(hù)瀏覽。第一種情況很簡(jiǎn)單,筆者不再敘述,下文將詳細介紹后兩種情況的設計方法。
一、某一頁(yè)面只讓某些用戶(hù)瀏覽
將這些客戶(hù)的信息保存在數據庫中,若能在數據庫中檢索到客戶(hù)輸入的姓名和密碼就允許訪(fǎng)問(wèn)該頁(yè)面。
Protect.asp文件 ′需限權訪(fǎng)問(wèn)的頁(yè)面
〈html〉〈head〉〈title〉賽迪主頁(yè)〈/title〉〈/head〉〈body bgcolor="#00FFFF"〉
′此處可輸入該頁(yè)面的其它內容
〈form action="Protect.asp" method="post"〉
請輸入姓名:
〈input type="text" name="text"〉
請輸入密碼:〈input type="password" size="20" name="password"〉
〈input type="submit" name="B1" value="查詢(xún)"〉〈/p〉〈/form〉
〈%set conn=server.createobject("adodb.connection")
conn.open "asptest"
′asptest是存放客戶(hù)信息的表單permission所在的數據庫的名字
sql1="select from permission where xm=‘‘"&&request.form("text") && "‘‘ and mima=‘‘"&&request.form("password")&&"‘‘"
set rs=conn.execute(sql1)%〉
′如果數據庫中存在客戶(hù)輸入的姓名和密碼,就顯示頁(yè)面product.asp的超級鏈接
〈% if not rs.eof then%〉〈a href="product.asp"〉本公司的產(chǎn)品〈/a〉
〈%end if%〉〈/body〉〈/html〉
二、某些頁(yè)面只讓某些用戶(hù)瀏覽
我們可以設計一登錄頁(yè)面register.asp,如果客戶(hù)沒(méi)有登錄,在進(jìn)入每個(gè)需限權訪(fǎng)問(wèn)的頁(yè)面時(shí)強制客戶(hù)先訪(fǎng)問(wèn)頁(yè)面register.asp實(shí)現登錄。成功登錄之后自動(dòng)返回到剛才要訪(fǎng)問(wèn)的頁(yè)面。我們可用cookies和session兩種方法來(lái)實(shí)現。
1.用cookies實(shí)現
如果客戶(hù)已經(jīng)登錄過(guò),就把登錄的信息記錄在客戶(hù)端的cookies中,之后客戶(hù)就可直接瀏覽其它限權訪(fǎng)問(wèn)的頁(yè)面。
register.asp
〈% if request.form("b1")="提交" then
set conn=server.createobject("adodb.connection")
conn.open "asptest"
sql1="select * from permission where xm=‘‘"&&request.form("name") &&"‘‘ and mima=‘‘"&&request.form("password")&&"‘‘"
set rs=conn.execute(sql1)
if not rs.eof then
response.cookies("register")="true"
rs.close
conn.close
end if
′若數據庫中存在該用戶(hù)的信息,就記錄該用戶(hù)成功登錄的標記到cookies中
end if%〉
〈html〉〈head〉〈/head〉
〈body bgcolor="#c0c0c0" 〉
〈p align="center"〉〈big〉〈big〉〈big〉親愛(ài)的客戶(hù),請您登錄!〈/big〉〈/big〉〈/big〉〈/p〉〈hr〉
〈form action="register.asp" method="post" name="form1"〉
〈div align="center"〉〈p〉姓名:
〈input name="name" size="13"〉〈/p〉
〈p〉密碼:〈input name="password"
size="13"type="password"〉〈/p〉〈/div〉
〈div align="right"〉〈input type="submit" name="b1" value="提交" 〉 〈/div〉〈/form〉〈/body〉〈/html〉
Protect.asp文件 ′需限權訪(fǎng)問(wèn)的頁(yè)面
〈%if request.cookies("register")〈〉"true" then
response.redirect "register.asp"
end if%〉
′若客戶(hù)未登錄,則強制客戶(hù)登錄
〈html〉〈head〉〈/head〉
〈body bgcolor="#00FFFF"〉
′此處是需保護的頁(yè)面內容
〈/body〉〈/html〉
2.用session實(shí)現
session是用戶(hù)級的全局變量, 我們將客戶(hù)成功登錄的信息記錄到session中后,用戶(hù)就可直接瀏覽其它限權訪(fǎng)問(wèn)的頁(yè)面了。
global.asp
〈script language=vbscript runat=server〉
sub Session_onstart
session("register")="false"
′記錄客戶(hù)成功登錄的信息
session("lognumber")=0
′記錄客戶(hù)嘗試登錄的次數,最多允許嘗試三次
session("prescript")=""
′記錄客戶(hù)要訪(fǎng)問(wèn)的頁(yè)面,以便登錄后返回該頁(yè)
end sub
〈/script〉
register.asp
〈% if request.form("b1")="提交" then
set
conn=server.createobject("adodb.connection")
conn.open "asptest"
sql1="select * from permission where xm=‘‘"&&request.form("name") &&"‘‘ and mima=‘‘"&&request.form("password")&&"‘‘"
set rs=conn.execute(sql1)
if not rs.eof then
session("register")="true"
′若數據庫中存在該用戶(hù)的信息,就記錄該用戶(hù)成功登錄的標記到register變量中
rs.close
conn.close
response.redirect session("prescript")
′成功登錄后自動(dòng)返回剛才要訪(fǎng)問(wèn)的頁(yè)面
end if
if session("lognumber")〈3 then
session("lognumber")=
session("lognumber")+1
response.redirect "register.asp"
else
response.redirect "sorry.asp"
end if
′允許嘗試登錄三次,若均未成功,則禁止訪(fǎng)問(wèn)并同時(shí)顯示頁(yè)面sorry.asp
end if%〉
〈html〉〈head〉〈/head〉
〈body bgcolor="#c0c0c0" 〉
〈p align="center"〉〈big〉〈big〉
〈marquee align="middle"
behavior="alternate" 〉歡迎您的光臨,請您先登錄!〈/marquee〉〈br〉
〈%if session("lognumber")〉0 then%〉
輸入有誤!請重新輸入姓名和密碼!
〈% end if%〉
〈/big〉〈/big〉〈/p〉〈hr〉
〈form action="register.asp" method="post" name="form1"〉
〈div align="center"〉〈p〉姓名:
〈input name="name" size="13"〉〈/p〉
〈p〉密碼:〈input name="password"
size="13"type="password"〉〈/p〉〈/div〉
〈div align="right"〉〈input type="submit" name="b1" value="提交" 〉
〈/div〉〈/form〉〈/body〉〈/html〉
Protect.asp文件 ′需限權訪(fǎng)問(wèn)的頁(yè)面
〈% if session("register")〈 〉"true" then
session("prescript")=
request.servervariables("scrip20041028110121.htm")
response.redirect "register.asp"
end if%〉
′記錄該頁(yè)面的路徑到prescript變量中并強制客戶(hù)登錄
〈html〉〈head〉
〈meta http-equiv="Content-Type"
content="text/html; charset=gb_2312-80"〉〈/head〉
〈body bgcolor="#00FFFF"〉
′此處可輸入該頁(yè)面其它內容的腳本
〈/body〉〈/html〉
以上幾種方法,設計者可以根據系統的需要進(jìn)行靈活運用
聯(lián)系客服