返回列表 上一主題 發帖

[教學] (實戰專題) 教職員專區 限制瀏覽篇

[教學] (實戰專題) 教職員專區 限制瀏覽篇

建立學校專屬的網站,不外乎是希望社會大眾及家長了解學校的特色與優點,進而與家長們互動。 但是對於校內教務,不一定需要向大眾及家長們公佈。比如說:教職員職務上的調動、教師的評鑑等等...所以在此我們只要建立一個『教職員專區』就行了,如果是向校內教職員公佈消息的網頁,我們就先要求進行『登入(Login)』的動作,確認身分為校內教職員後,才可以進行網頁的瀏覽。

建立教職員專區最重要的就是教職員身份的確認,我們要先確認來訪者的身分是否確實是校內教職員,因此!我們必須透過身分驗證的機制來讓教職員『登入』。


  • 首先我們先來想想:向校內教職員公佈消息的網頁有多少?如果是少量的三五頁,我們可以在每張網頁中加入『身分認證』的功能,同時,校內教職員每連結瀏覽一張網頁就必須身分認證一次,如果是少量的三五頁,那只是多登入幾次而已,但如果是十數頁或是數十頁呢?那不僅是負責網站建構的老師累(每張網頁都得加上身分認證程式),連進行連結瀏覽的教職員都麻煩(要不斷的進行登入確認身份的動作),所以我們必須將『身分認證』的程式獨立出來。

  • 『身分認證』的功能要發揮效用,當然要有比對身份的資料來源,所以我們必須建立一個『教職員身份』的資料庫,把校內教職員的資料建立於資料庫中以便『身分認證』時能夠進行身分確認。

  • 本範例中的程式,為了讓許多負責學校網站建構的教師們可立即使用,所以程式碼的部分將暫時不多作說明,我們將針對教職員身分資料建構的資料庫資料表內容設定及程式利用的部分作說明。




建立教職員資料


   為了讓『身份認證』的功能發揮效用,所以我們必須先建立比對身份的資料來源:『教職員身份』資料庫,把校內教職員的身分資料建立於資料庫中以便『身份認證』時能夠進行身分確認。

本範例將校內教職員的身分資料建立於Access資料庫中,這個『教職員身份』資料庫我們定名為『teach.mdb』,而在資料庫中用來儲存教職員身分資料的資料表則定名為『教職員認證』。

在『教職員認證』資料表中,我們建立了四個欄位:ID、Password、Name、Job,其欄位設定說明如下:

欄位名稱

資料型態

說明

ID

文字

登入時的使用名稱

Password

文字

登入密碼

Name

文字

教職員姓名

Job

文字

教職員職稱



13-1.png
2010-5-26 21:19


13-2.png
2010-5-26 21:19
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

建立登入程式

為了避免重複登入的動作,以及免除將每個網頁加入身分認證的程式,所以我們必須先建立一個確認登入的程式:『check.asp 』

這個登入程式必須具備下列四項基本功能:


  • 若連結瀏覽者要連結教職員專屬的網頁,但是尚未通過身分確認,也就是說尚未完成登入的動作,則顯示如下圖的登入化畫面:

    13-3.png
    2010-5-26 21:21


  • 進行連結瀏覽者的教職員身分確認。

  • 如果連結瀏覽者的身分已經確認為教職員無誤,就給予連結瀏覽教職員專屬網頁的權利。

  • 判斷連結瀏覽者是否已經完成過登入身分確認的動作,如果已經做過登入動作且身分確認無誤,就不需再顯示登錄畫面及登入要求。



登入畫面

我們登入程式在判斷連結瀏覽者尚未通過身分確認,也就是說尚未完成登入的動作時,必須立即顯示出登入的畫面,因此,我們必須先完成登錄畫面部分的HTML網頁內容,基礎網頁HTML如下:
  1. <HTML>
  2. <BODY>
  3. <h2 ALIGN="CENTER"><img border="0" src="login.gif"></h2>
  4. <CENTER><FORM Action=<%=Request.ServerVariables("PATH_INFO")%> Method=POST>
  5. <TABLE BORDER=1 CELLSPACING=0 >
  6. <TR><TD ALIGN=RIGHT>登入名稱:</TD>
  7. <TD><Input Type=Text Name=ID Size=12></TD></TR>
  8. <TR><TD ALIGN=RIGHT>登入密碼:</TD>
  9. <TD><Input Type=Password Name=Password Size=8></TD></TR>
  10. </TABLE><P>
  11. <INPUT Type=Submit Name="Send" Value=" 確 定 ">
  12. </FORM></CENTER>
  13. </BODY>
  14. </HTML>
複製代碼
13-4.png
2010-5-26 21:22



身分驗證程式

完成基礎的登錄畫面HTML設計,接下來就是登入確認程式的撰寫了,在程式中我們是利用Session物件來記錄連結瀏覽者是否已經完成過登入身分確認的動作,如果已經做過登入動作且身分確認無誤,就不需再顯示登錄畫面及登入要求。如果連結瀏覽者的身分尚未確認,則出現登入表單讓連結瀏覽者輸入登入資料,當連結瀏覽者在表單中輸入資料後,按下『確定』按鈕將會執行我們的身分確認程式進行開啟資料庫,來確認連結瀏覽者的身分!下列就是我們身分確認的ASP程式:
  1. <%
  2. ID=Request("ID")
  3. Password = Request("Password")
  4. ok=session("checkok")
  5. IF ok <> "yes" Then
  6. Set conobject = Server.CreateObject("ADODB.Connection")
  7. DBPath = Server.MapPath("teach.mdb")
  8. conobject.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&DBPath
  9. Set recobject=Server.CreateObject("ADODB.Recordset")
  10. SQL = "Select * From 教職員認證 Where ID='" & ID & "'"
  11. SQL = SQL & " And Password = '" & Password & "'"
  12. recobject.Open SQL,conobject,1,1,1
  13. if Not recobject.Eof then
  14. ok = "yes"
  15. session("checkok")=ok
  16. else
  17. %>
複製代碼
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

TOP

加入驗證程式

13-5.png
2010-5-26 21:26


到現階段,我們已經完成『身分確認』網頁的『登入表單』與『身分驗證』的ASP程式撰寫。現在我們接著來看看該如何將一般的網頁設定為教職員專屬的網頁。

    現在就以範例所使用的TEST1.asp與TEST2.asp為例向大家說明,要將一般的網頁設定為教職員專屬的網頁,其實只要在每個網頁中加入身分驗證的程式即可,但是不要忘了!我們已經將身分驗證的ASP程式與登入畫面獨立出來了,因此,不需要將每個要設定為教職員專屬的網頁都加上相同的程式,我們只需要在每個網頁的最前面位置加入下面這行敘述就行了:
  1. <!-- #Include File="check.asp" -->
複製代碼
利用說明

     本範例中所提供的身分驗證程式『check.asp』,將校內教職員的身分資料建立於Access資料庫中,這個『教職員身份』資料庫為『teach.mdb』,同時在資料庫檔案中用來儲存教職員身分資料的資料表為『教職員認證』資料表。

    您可以先試試我們的範例網頁TEST1.asp或是TEST2.asp,不管您先連結進入哪一個網頁,都必須先進行身分確認的登入動作,但是只要確認一次即可,如果再進行其他的專屬網頁連結時就不必再進行任何的身分確認登入動作了,測試登入名稱:TEST,密碼:1234,以連結TEST2.asp為例,第一次連結瀏覽時將見到下列的登入畫面,請於登入名稱欄位中填入"TEST",登入密碼欄位中填入"1234":

13-6.png
2010-5-26 21:26


    順利通過身分確認後,即可見到專屬網頁TEST2.asp內容畫面:

13-7.png
2010-5-26 21:27


check.asp
  1. <%
  2. ID=Request("ID")  
  3. Password = Request("Password")
  4. ok=session("checkok")
  5. IF ok <> "yes" Then
  6.         Set conobject = Server.CreateObject("ADODB.Connection")
  7.         DBPath = Server.MapPath("teach.mdb")
  8.         conobject.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&DBPath
  9.         Set recobject=Server.CreateObject("ADODB.Recordset")
  10.         SQL = "Select * From 教職員認證 Where ID='" & ID & "'"
  11.            SQL = SQL & " And Password = '" & Password & "'"
  12.            recobject.Open SQL,conobject,1,1,1
  13.                    if Not recobject.Eof then
  14.                    ok = "yes"
  15.                    session("checkok")=ok
  16.             else
  17.             %>
  18. <HTML>
  19. <BODY>
  20. <h2 ALIGN="CENTER"><img border="0" src="login.gif"></h2>
  21. <CENTER>
  22. <FORM Action=<%=Request.ServerVariables("PATH_INFO")%> Method=post>
  23. <TABLE BORDER=1 CELLSPACING=0 >
  24.    <TR><TD ALIGN=RIGHT>登入名稱:</TD>
  25.    <TD><Input Type=Text Name=ID Size=10></TD></TR>
  26.    <TR><TD ALIGN=RIGHT>登入密碼:</TD>
  27.    <TD><Input Type=Password Name=Password Size=8></TD></TR>
  28. </TABLE><P>
  29. <INPUT Type=Submit Value=" 確 定 ">
  30. </FORM>
  31. </CENTER>
  32. </BODY>
  33. </HTML>
  34. <%
  35. Response.End
  36.             end if   
  37. End If
  38. %>
複製代碼
(實戰專題) 教職員專區 限制瀏覽篇 完整範例壓縮檔: password.zip (24.68 KB)
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

TOP

        靜思自在 : 心中常存善解、包容、感思、知足、惜福。
返回列表 上一主題