經驗交流

使用者權限控管(一)

問題說明
 若網站中有部份功能僅供特定使用者操作時,我們必須對使用者的身份進行確認,以決定何人可使用何項功能。

我的做法
 首先,我們必須建立一個使用者的登入介面,並在成功登入之後,記錄其相關資訊,以便他去操作符合其權限的各項功能。這個部份的做法,請自行參考「使用者登入」中的說明。
 其次,在僅供特定使用者操作的功能中,必須針對使用者進行檢查,拒絕讓未經合法登入者使用。在這些程式中,我們可以加入一段如下方所示的程式碼,將「不速之客」逐出:
<?
// 啟用 Session
session_start();

// 將未登入者,導向至首頁
if ( empty($_SESSION["ssnUSERNAME"]) ) {
  Header("location:/index.html");
  exit;
}
?>

 若您的應用程式中,還針對已登入的使用者做不同身份等級的區隔,例如:在「公告管理系統」中,由職員所發布的公告內容,需再經由主管確認之後,方能顯示在網站中;而由主管親自發布的公告內容,得免經再確認的程序。那麼,您可以用類似這樣的方法:
<?
......

// 主管身份,免經「再確認」程序
if ( $_SESSION["ssnUSERLEVEL"] < 3 ) {
  $sql = "INSERT INTO bulletin ( no, ......, approve ) VALUES ( 28, ......, 1 ); ";
  mysql_db_query($cfgDatabaseName, $sql, $link);
}

// 職員身份,需經「再確認」程序
else {
  $sql = "INSERT INTO bulletin ( no, ......, approve ) VALUES ( 28, ......, 0 ); ";
  mysql_db_query($cfgDatabaseName, $sql, $link);
}

......
?>

 如果有些功能只能給高階使用者操作的話,類似上述的檢查方式,您可以在這些程式中,加入一段如下方所示的程式碼,以拒絕其他使用者進入:
<?
// 啟用 Session
session_start();

// 將未登入或身份等級不足者,導向至首頁
if ( empty($_SESSION["ssnUSERNAME"]) || $_SESSION["ssnUSERLEVEL"] >= 3 ) {
  Header("location:/index.html");
  exit;
}
?>
經驗交流