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'] 不存在即可),另外一個是已登入,但身份不是管理員者,只要符合其一,就加入截止時間必須大於現在時間(尚未截止之意),以及活動是開啟狀態的條件。