start(); // 驗證使用者 // 若未登入或權限不足, 則轉至登入網頁 if(!$a->checkAuth() || $a->getAuthData('role')!=3) { header('Location:Login.php'); exit(); // 結束程式, 不執行後續程式也不輸出 HTML } header('Content-Type:text/html; charset=utf-8'); // 所有管理動作都會傳回特定的 op 參數 // 移除使用者 -> 'remove' 重寄認證信 -> 'resent' // 停用會員 -> 'ban' 恢復使用 -> 'unban' // 變更等級 -> 'changerole' // 以下用 if/else 以及 switch 判斷 op 參數 // 並執行對應的動作 if ($_GET['op']=='remove') { // 移除使用者的處理 $a->removeUser($_GET['username']); $message = '已移除使用者:' . $_GET['username']; } elseif($_GET['op']=='resent') { // 重寄認證信的處理 $sql = "SELECT email,activate_code FROM users WHERE username = " . $mdb2->quote($_GET['username'],'text'); $res = $mdb2->query($sql); if(PEAR::isError($res)) die('資料庫操作失敗,請稍後再試:'.$res->getMessage()); $row = $res->fetchRow(); if(PEAR::isError($row)) die('資料庫操作失敗,請稍後再試:'.$row->getMessage()); // 呼叫自訂函式 sendmail() 寄出認證信, 並依郵寄結果設定訊息 if(sendmail($_GET['username'], $row['email'], $row['activate_code'], 'activate')) $message = '已重寄認證信給' . $_GET['username']; else $message = '重寄認證信失敗'; } elseif (isset($_GET['op'])){ // 其它狀況 // 先依照 $_GET['op'] 的值, 設定不同的 SQL 敘述 switch($_GET['op']) { case 'ban': // 停用會員 $sql = "UPDATE users SET banned=true WHERE username = " . $mdb2->quote($_GET['username'],'text'); break; case 'unban': // 恢復使用 $sql = "UPDATE users SET banned=false WHERE username = " . $mdb2->quote($_GET['username'],'text'); break; case 'changerole': // 變更等級 $sql = sprintf("UPDATE users SET role= %s WHERE username= %s", $mdb2->quote($_GET['role'],'integer'), $mdb2->quote($_GET['username'],'text')); } $res = $mdb2->exec($sql); if(PEAR::isError($res)) die('資料庫操作失敗,請稍後再試:' . $res->getMessage()); } //----------------------------------------------------------- $users = $a->listUsers(); // 處理完畢後, 再取得全部會員資料 ?> 會員管理網頁
"; else echo ""; // 輸出會員名稱及電子郵件 echo "\n"; echo "\n"; // 輸出啟動狀態 if($user['activated']==true) echo "\n"; // 若會員帳號尚未啟動, 則多附上重寄認證信連結 // 當新會員表示未收到認證信, 即可使用此功能 else echo "\n"; // 輸出等級及改變等級的下拉式選單與按鈕 echo "\n"; else echo "\n"; // 依 'banned' 欄的狀態, 輸出帳號是否被停止使用 // 並列出『停用』或『恢復使用』的連結 if($user['banned']==1) echo "\n"; // 為避免誤將自己停用 // 檢查非目前登入的帳號, 才會附上『立即停用』連結 elseif($user['username']!=$a->getUsername()) echo "\n"; else echo "\n"; // 輸出刪除會員的連結, 為了避免誤刪管理員 // 因此先檢查會員等級 if($user['role']==3) echo "\n"; else // 非管理員的帳號 ('role' 欄位不是 3) // 才會顯示刪除的連結 echo "\n"; echo "\n"; $i++; } ?>
會員清單
會員名稱電子郵件啟動狀態 等級停用狀態 
$name{$user['email']}已啟動未啟動" . "重寄認證信"; // 為避免誤將自己變更為非管理員 // 因此先檢查非目前登入者, 才輸出 "變更" 按鈕 if($user['username']!=$a->getUsername()) echo "已停用 恢復使用未停用 立即停用未停用 刪除
回登入網頁