0%

[技能檢定]題組二 步驟9 處理會員登入顯示及建置後台主頁

在上一步時我們完成了會員登入相關的功能,題組二前後台共用的部份只剩下登入顯示,其中管理員的登入顯示又和一般會員的顯示不太一樣,在製作時要注意一下。

  • 必須有一個狀態用來紀錄登入的使用者,這邊我們使用session
  • 在前面進行會員登入功能製作時,我們尚未做完登出及前後台登入區的顯示,我們放在這一步一起完成
  1. 先前我們在處理會員登入功能時,已經在類別 User 中的 chk_acc($user) 方法中,增加了一個登入成功時會紀錄session的功能,這個session就是用來辨識使用者登入狀況的依據。
    /Controller/User.php

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    function chk_acc($user){
    $chk=$this->count(['acc'=>$user['acc']]);
    if($chk>0){
    $chk=$this->chk_pw($user);
    if($chk>0){
    //帳密都正確時,在session中紀錄使用者帳號
    $_SESSION['user']=$user['acc'];
    return 1;
    }else{
    return 2;
    }
    }else{
    return 0;
    }
    }
  2. 修改 index.php 中的會員登入按鈕,依據session的狀態來決定要顯示的內容,這裹也要一併考慮管理者登入時的顯示內容

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <span style="width:25%; display:inline-block;">
    <?php
    if (isset($_SESSION['user'])) {
    ?>
    歡迎,<?= $_SESSION['user']; ?>
    <?php
    if ($_SESSION['user'] == 'admin') {
    echo "<button onclick='location.href=&#39;backend.php&#39;'>";
    echo "管理";
    echo "</button>";
    }
    ?>
    <button onclick="location.href='./api/logout.php'">登出</button>
    <?php
    } else {
    ?>
    <a href="?do=login">會員登入</a>
    <?php
    }
    ?>
    </span>

  3. index.php 複製一份成為 backend.php

  4. 修改 backend.php 中,include ./view/front/ 的路徑改成 ./view/backend/
    backend.php

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <div class="">
    <?php
    //取得網址參數
    $do=$_GET['do']??'main';

    //將首字母變大寫
    $table=ucfirst($do);

    //建立頁面路徑
    $file="./view/backend/".$do.".php";

    //判斷檔案及變數
    if(file_exists($file) && $do!='main'){

    //執行物件內的backend()函式
    $$table->backend();
    }else{

    //如果沒有對應的頁面檔案,則直接載入main.php
    include "./view/backend/main.php";
    }

    </div>