:::
14-1 過期活動不該顯示出來
- 過期的活動,還有關閉的活動,其實都不該顯示出來。
- 問題是,不顯示出來,管理員如何進入已關閉的活動再將之開啟呢?
- 特地為管理員做個界面?也是可以,但也太累人了...
- 建議解法:列出活動時,可根據身份來呈現不同結果。
一、修改列出活動的函數
- 這部份的改法相當簡單,只要修改一個函數就結束了。
//列出所有活動 function list_action() { global $db, $smarty; $where = (!isset($_SESSION['group']) or $_SESSION['group'] != "admin") ? 'where `end_date` > now() and `enable`=1' : ''; $sql = "SELECT * FROM `actions` $where order by action_date desc"; $result = $db->query($sql); if (!$result) { throw new Exception($db->error); } $actions = []; while ($values = $result->fetch_assoc()) { $actions[] = $values; } $smarty->assign('actions', $actions); } -
第五行的條件中,我們設了兩個條件,一個是尚未登入者(只要判斷 $_SESSION['group'] 不存在即可),另外一個是已登入,但身份不是管理員者,只要符合其一,就加入截止時間必須大於現在時間(尚未截止之意),以及活動是開啟狀態的條件。
14. 開始處理小細節