ASP訪問權限設置技術

字號:


    在設計網(wǎng)頁時,經(jīng)常遇到某些頁面需限權訪問的情況。比如,一個公司的某些產(chǎn)品只讓某一或某些供應商或客戶瀏覽。那么,我們如何實現(xiàn)這一功能呢?本文,筆者將向讀者介紹幾種限制客戶訪問權限的方法。
    通常,我們在設計過程中會面臨三種情況:某一頁面只讓某一用戶瀏覽、某一頁面只讓某些用戶瀏覽和某些頁面只讓某些用戶瀏覽。第一種情況很簡單,筆者不再敘述,下文將詳細介紹后兩種情況的設計方法。
    一、某一頁面只讓某些用戶瀏覽
    將這些客戶的信息保存在數(shù)據(jù)庫中,若能在數(shù)據(jù)庫中檢索到客戶輸入的姓名和密碼就允許訪問該頁面。
    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所在的數(shù)據(jù)庫的名字
    sql1="select  from permission where xm='
    "&&request.form("text") && "' and mima='"&&request.form("password")&&"'"
    set rs=conn.execute(sql1)%〉
    ′如果數(shù)據(jù)庫中存在客戶輸入的姓名和密碼,就顯示頁面product.asp的超級鏈接
    〈% if not rs.eof then%〉〈a href="product.asp"〉本公司的產(chǎn)品〈/a〉
    〈%end if%〉〈/body〉〈/html〉
    二、某些頁面只讓某些用戶瀏覽
    我們可以設計一登錄頁面register.asp,如果客戶沒有登錄,在進入每個需限權訪問的頁面時強制客戶先訪問頁面register.asp實現(xiàn)登錄。成功登錄之后自動返回到剛才要訪問的頁面。我們可用cookies和session兩種方法來實現(xiàn)。
    1.用cookies實現(xiàn)
    如果客戶已經(jīng)登錄過,就把登錄的信息記錄在客戶端的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
    ′若數(shù)據(jù)庫中存在該用戶的信息,就記錄該用戶成功登錄的標記到cookies中
    end if%〉
    〈html〉〈head〉〈/head〉
    〈body bgcolor="#c0c0c0" 〉
    〈p〉〈big〉〈big〉〈big〉親愛的客戶,請您登錄!
    〈/big〉〈/big〉〈/big〉〈/p〉〈hr〉
    〈form action="register.asp" method="post" name="form1"〉
    〈div〉〈p〉姓名:
    〈input name="name" size="13"〉〈/p〉
    〈p〉密碼:〈input name="password"
    size="13"type="password"〉〈/p〉〈/div〉
    〈div〉〈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實現(xiàn)
    session是用戶級的全局變量, 我們將客戶成功登錄的信息記錄到session中后,用戶就可直接瀏覽其它限權訪問的頁面了。
    global.asp
    〈script language=vbscript runat=server〉
    sub Session_onstart
    session("register")="false"
    ′記錄客戶成功登錄的信息
    session("lognumber")=0
    ′記錄客戶嘗試登錄的次數(shù),最多允許嘗試三次
    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"
    ′若數(shù)據(jù)庫中存在該用戶的信息,就記錄該用戶成功登錄的標記到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〉〈big〉〈big〉
    〈marquee
    behavior="alternate" 〉歡迎您的光臨,請您先登錄!〈/marquee〉〈br〉
    〈%if session("lognumber")〉0 then%〉
    輸入有誤!請重新輸入姓名和密碼!
    〈% end if%〉
    〈/big〉〈/big〉〈/p〉〈hr〉
    〈form action="register.asp" method="post" name="form1"〉
    〈div〉〈p〉姓名:
    〈input name="name" size="13"〉〈/p〉
    〈p〉密碼:〈input name="password"
    size="13"type="password"〉〈/p〉〈/div〉
    〈div〉〈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〉
    以上幾種方法,設計者可以根據(jù)系統(tǒng)的需要進行靈活運用