訪問|頁面 在設計網頁時,經常遇到某些頁面需限權訪問的情況。比如,一個公司的某些產品只讓某一或某些供應商或客戶瀏覽。那麼,我們如何?這一功能呢?本文,筆者將向讀者介紹幾種限制客戶存取權限的方法。
通常,我們在設計過程中會面臨三種情況:某一頁面只讓某一使用者瀏覽、某一頁面只讓某些使用者瀏覽和某些頁面只讓某些使用者瀏覽。第一種情況很簡單,筆者不再敘述,下文將詳細介紹後兩種情況的設計方法。
一、某一頁面只讓某些使用者瀏覽
將這些客戶的資訊儲存在資料庫中,若能在資料庫中檢索到客戶輸入的姓名和密碼就允許訪問該頁面。
Protect.asp檔案 ′需限權訪問的頁面 〈html〉〈head〉〈title〉賽迪首頁〈/title〉〈/head〉〈body bgcolor="#00FFFF"〉 ′此處可輸入該頁面的其它內容 〈form action="Protect.asp" method="post"〉 請輸入姓名: 〈input type="text" name="text"〉 請輸入密碼:〈input type="password" size="20" name="password"〉 〈input type="submit" name="B1" value="查詢"〉〈/p〉〈/form〉 〈%set conn=server.createobject("adodb.connection") conn.open "asptest" ′asptest是存放客戶資訊的表單permission所在的資料庫的名字 sql1="select from permission where xm='"&&request.form("text") && "' and mima='"&&request.form("password")&&"'" set rs=conn.execute(sql1)%〉 ′如果資料庫中存在客戶輸入的姓名和密碼,就顯示頁面product.asp的超級連結 〈% if not rs.eof then%〉〈a href="product.asp"〉本公司的產品〈/a〉 〈%end if%〉〈/body〉〈/html〉 |
二、某些頁面只讓某些使用者瀏覽
我們可以設計一登入頁面register.asp,如果客戶沒有登入,在進入每個需限權訪問的頁面時強制客戶先訪問頁面register.asp實現登入。成功登入之後自動返回到剛才要訪問的頁面。我們可用cookies和session兩種方法來實現。
1.用cookies實現
如果客戶已經登入過,就把登入的資訊記錄在用戶端的cookies中,之後客戶就可直接瀏覽其它限權訪問的頁面。
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 ′若資料庫中存在該使用者的資訊,就記錄該使用者成功登入的標記到cookies中 end if%〉 〈html〉〈head〉〈/head〉 〈body bgcolor="#c0c0c0" 〉 〈p align="center"〉〈big〉〈big〉〈big〉親愛的客戶,請您登入!〈/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檔案 ′需限權訪問的頁面 〈%if request.cookies("register")〈〉"true" then response.redirect "register.asp" end if%〉 ′若客戶未登入,則強制客戶登入 〈html〉〈head〉〈/head〉 〈body bgcolor="#00FFFF"〉 ′此處是需保護的頁面內容 〈/body〉〈/html〉 |
2.用session實現
session是使用者級的全域變數, 我們將客戶成功登入的資訊記錄到session中後,使用者就可直接瀏覽其它限權訪問的頁面了。
global.asp 〈script language=vbscript runat=server〉 sub Session_onstart session("register")="false" ′記錄客戶成功登入的資訊 session("lognumber")=0 ′記錄客戶嘗試登入的次數,最多允許嘗試三次 session("prescript")="" ′記錄客戶要訪問的頁面,以便登入後返回該頁 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" ′若資料庫中存在該使用者的資訊,就記錄該使用者成功登入的標記到register變數中 rs.close conn.close response.redirect session("prescript") ′成功登入後自動返回剛才要訪問的頁面 end if if session("lognumber")〈3 then session("lognumber")= session("lognumber")+1 response.redirect "register.asp" else response.redirect "sorry.asp" end if ′允許嘗試登入三次,若均未成功,則禁止訪問並同時顯示頁面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檔案 ′需限權訪問的頁面 〈% if session("register")〈 〉"true" then session("prescript")= request.servervariables("script_name") response.redirect "register.asp" end if%〉 ′記錄該頁面的路徑到prescript變數中並強制客戶登入 〈html〉〈head〉 〈meta http-equiv="Content-Type" content="text/html; charset=gb_2312-80"〉〈/head〉 〈body bgcolor="#00FFFF"〉 ′此處可輸入該頁面其它內容的指令碼 〈/body〉〈/html〉 |
以上幾種方法,設計者可以根據系統的需要進行靈活運用