明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

ASP中頁(yè)面限權(quán)訪問(wèn)的幾種方法

[摘要]在設(shè)計(jì)網(wǎng)頁(yè)時(shí),經(jīng)常遇到某些頁(yè)面需限權(quán)訪問(wèn)的情況。比如,一個(gè)公司的某些產(chǎn)品只讓某一或某些供應(yīng)商或客戶瀏覽。那么,我們?nèi)绾螌?shí)現(xiàn)這一功能呢?本文,筆者將向讀者介紹幾種限制客戶訪問(wèn)權(quán)限的方法。   通常,我們?cè)谠O(shè)計(jì)過(guò)程中會(huì)面臨三種情況:某一頁(yè)面只讓某一用戶瀏覽、某一頁(yè)面只讓某些用戶瀏覽和某些頁(yè)面只讓某些用...
在設(shè)計(jì)網(wǎng)頁(yè)時(shí),經(jīng)常遇到某些頁(yè)面需限權(quán)訪問(wèn)的情況。比如,一個(gè)公司的某些產(chǎn)品只讓某一或某些供應(yīng)商或客戶瀏覽。那么,我們?nèi)绾螌?shí)現(xiàn)這一功能呢?本文,筆者將向讀者介紹幾種限制客戶訪問(wèn)權(quán)限的方法。

  通常,我們?cè)谠O(shè)計(jì)過(guò)程中會(huì)面臨三種情況:某一頁(yè)面只讓某一用戶瀏覽、某一頁(yè)面只讓某些用戶瀏覽和某些頁(yè)面只讓某些用戶瀏覽。第一種情況很簡(jiǎn)單,筆者不再敘述,下文將詳細(xì)介紹后兩種情況的設(shè)計(jì)方法。

一、某一頁(yè)面只讓某些用戶瀏覽
  將這些客戶的信息保存在數(shù)據(jù)庫(kù)中,若能在數(shù)據(jù)庫(kù)中檢索到客戶輸入的姓名和密碼就允許訪問(wèn)該頁(yè)面。
  Protect.asp文件 ′需限權(quán)訪問(wèn)的頁(yè)面

  〈html〉〈head〉〈title〉賽迪主頁(yè)〈/title〉〈/head〉〈body bgcolor="#00FFFF"〉

  ′此處可輸入該頁(yè)面的其它內(nèi)容

  〈form action="Protect.asp" method="post"〉

  請(qǐng)輸入姓名:

  〈input type="text" name="text"〉

  請(qǐng)輸入密碼:〈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所在的數(shù)據(jù)庫(kù)的名字

  sql1="select  from permission where xm='"&&request.form("text") && "' and mima='"&&request.form("password")&&"'"

  set rs=conn.execute(sql1)%〉

  ′如果數(shù)據(jù)庫(kù)中存在客戶輸入的姓名和密碼,就顯示頁(yè)面product.asp的超級(jí)鏈接

  〈% if not rs.eof then%〉〈a href="product.asp"〉本公司的產(chǎn)品〈/a〉

  〈%end if%〉〈/body〉〈/html〉

二、某些頁(yè)面只讓某些用戶瀏覽
  我們可以設(shè)計(jì)一登錄頁(yè)面register.asp,如果客戶沒(méi)有登錄,在進(jìn)入每個(gè)需限權(quán)訪問(wèn)的頁(yè)面時(shí)強(qiáng)制客戶先訪問(wèn)頁(yè)面register.asp實(shí)現(xiàn)登錄。成功登錄之后自動(dòng)返回到剛才要訪問(wèn)的頁(yè)面。我們可用cookies和session兩種方法來(lái)實(shí)現(xiàn)。

  1.用cookies實(shí)現(xiàn)

  如果客戶已經(jīng)登錄過(guò),就把登錄的信息記錄在客戶端的cookies中,之后客戶就可直接瀏覽其它限權(quán)訪問(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

  ′若數(shù)據(jù)庫(kù)中存在該用戶的信息,就記錄該用戶成功登錄的標(biāo)記到cookies中

  end if%〉

  〈html〉〈head〉〈/head〉

  〈body bgcolor="#c0c0c0" 〉

  〈p align="center"〉〈big〉〈big〉〈big〉親愛的客戶,請(qǐng)您登錄!〈/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文件 ′需限權(quán)訪問(wèn)的頁(yè)面

  〈%if request.cookies("register")〈〉"true" then

   response.redirect "register.asp"

   end if%〉

  ′若客戶未登錄,則強(qiáng)制客戶登錄

  〈html〉〈head〉〈/head〉

  〈body bgcolor="#00FFFF"〉

  ′此處是需保護(hù)的頁(yè)面內(nèi)容

  〈/body〉〈/html〉

  2.用session實(shí)現(xiàn)

  session是用戶級(jí)的全局變量, 我們將客戶成功登錄的信息記錄到session中后,用戶就可直接瀏覽其它限權(quán)訪問(wèn)的頁(yè)面了。

  global.asp

  〈script language=vbscript runat=server〉

  sub Session_onstart

   session("register")="false"

  ′記錄客戶成功登錄的信息

     session("lognumber")=0

   ′記錄客戶嘗試登錄的次數(shù),最多允許嘗試三次

   session("prescript")=""

  ′記錄客戶要訪問(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"

   ′若數(shù)據(jù)庫(kù)中存在該用戶的信息,就記錄該用戶成功登錄的標(biāo)記到register變量中

  rs.close

   conn.close

   response.redirect session("prescript")

  ′成功登錄后自動(dò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

  ′允許嘗試登錄三次,若均未成功,則禁止訪問(wèn)并同時(shí)顯示頁(yè)面sorry.asp

  end if%〉

  〈html〉〈head〉〈/head〉

  〈body bgcolor="#c0c0c0" 〉

  〈p align="center"〉〈big〉〈big〉

  〈marquee align="middle"

  behavior="alternate" 〉歡迎您的光臨,請(qǐng)您先登錄!〈/marquee〉〈br〉

  〈%if session("lognumber")〉0 then%〉

  輸入有誤!請(qǐng)重新輸入姓名和密碼!

  〈% 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文件   ′需限權(quán)訪問(wèn)的頁(yè)面

  〈% if session("register")〈 〉"true" then

  session("prescript")=

  request.servervariables("script_name")

   response.redirect "register.asp"

  end if%〉

   ′記錄該頁(yè)面的路徑到prescript變量中并強(qiáng)制客戶登錄

  〈html〉〈head〉

  〈meta http-equiv="Content-Type"

  content="text/html; charset=gb_2312-80"〉〈/head〉

  〈body bgcolor="#00FFFF"〉

  ′此處可輸入該頁(yè)面其它內(nèi)容的腳本

  〈/body〉〈/html〉

  以上幾種方法,設(shè)計(jì)者可以根據(jù)系統(tǒng)的需要進(jìn)行靈活運(yùn)用