:::

15. 認證與session

一、 關於session

  1. 「session」原意為「期間」,通常翻譯為「會期」。
  2. 使用者從啟動session開始,至瀏覽器關閉的這段期間,就是一個session。
  3. session可以讓您用來儲存各種資料,以便讓程式讀取使用。
  4. session實際上是一個儲存在主機端(通常放在/tmp中)的一個純文字檔。
  5. 要開始使用session,必須先用session_start()來啟動session功能。
  6. 要把資料存到session只要用 $_SESSION['名稱']="值"; 即可。
  7. 要使用之,則直接用 $_SESSION['名稱'] 即可。

二、 讓特定人員可以設定管理班級資料

  1. 建立config.php檔案,在裡面設定好帳號密碼,並於header.php中引入。
  2. 帳密可用陣列設定之:$admin['帳號']='密碼';
  3. 在header.php加入session_start()以啟動session功能。
  4. 可以在套入樣板前加入:if(!$_SESSION['isAdmin'])  $main=login_form();
  5. $_SESSION['isAdmin']是自訂的session,其值為真,表示管理員有登入了。
  6. login_form()為自訂函數,當管理員沒登入時,把$main的內容改為登入表單。
  7. login_form()裡面op為login,並含「帳號」、「密碼」欄位
  8. class.php的流程控制多一組login,並執行admin_login(),用來判斷帳號密碼是否和設定相符。
  9. header.php工具列多一組<li><a href='class.php?op=logout'>管理員登出</a></li>
  10. class.php的流程控制多一組logout,並執行$_SESSION['isAdmin']=null;然後轉向回本頁。

三、 讓副班長可以設定管理該班文章資料

  1. header.php的工具列多一組<li><a href="index.php?op=admin">文章管理</a></li>
  2. index.php流程多一組admin,並判斷$_SESSION['isLeader']有無值,有值則用list_article()列出該班所有文章,無值則執行leader_login_form()秀出登入表單。
  3. $_SESSION['isLeader']是自訂的session,其值可存班級編號class_sn,以辨識目前登入者是那一班的管理者,若無值則表示未登入了。
    if($_POST['pass']==$class['passwd']) $_SESSION['isLeader']=$class_sn;
  4. leader_login_form()為自訂函數,op為login,內含班級選單、「密碼」欄位。
  5. index.php的流程控制多一組login,並執行leader_login($class_sn),用來判斷輸入密碼是否和班級密碼相符。若符合,將班級編號$class_sn存入$_SESSION['isLeader']中。
  6. header.php工具列多一組<li><a href='index.php?op=logout'>副班長登出</a></li>
  7. index.php的流程控制多一組logout,並執行$_SESSION['isLeader']=null;然後轉向回本頁。
  8. 修改list_article($class_sn)函數,加入$class_sn作為參數。若$class_sn有值,則秀出該班文章,若空值秀出全部文章。
    $and_class_sn=empty($class_sn)?"":"and a.class_sn='{$class_sn}'";
  9. 將原刪除、編輯的連結用$tool取代之,若$_SESSION['isLeader']的值和目前顯示的文章其班級相符,就秀出$tool,否則$tool為空值。
    $tool=($_SESSION['isLeader']==$data['class_sn'])?"原編修工具連結":"";

:::

搜尋


書籍目錄

展開 | 闔起

線上使用者

14人線上 (6人在瀏覽線上書籍)

會員: 0

訪客: 14

更多…