0%

[技能檢定]題組三 步驟4 管理登入

題組三的管理登入算是簡單的功能,並不需要有個管理者的資料表來做紀錄,因此這邊只要直接寫死帳密做檢查即可;另外,雖然題目中沒有提到,但為了避免每次要到後台時都要再一次輸入帳號密碼,這邊建議還是透過 sessioncookie 來紀錄登入的狀態:

  1. /back.php 撰寫登入表單html碼
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <form action="?" method="post" style="width:35%;margin:20px auto;">
    <h3 class='ct'>管理者登入</h3>
    <?php
    if(isset($error)){
    echo $error;
    }
    ?>
    <table>
    <tr>
    <td>帳號:</td>
    <td><input type="text" name="acc" ></td>
    </tr>
    <tr>
    <td>密碼:</td>
    <td><input type="password" name="pw"></td>
    </tr>
    </table>
    <div class="ct"><input type="submit" value="登入"></div>
    </form>

  2. back.php 檔案的最前方,撰寫表單的驗證程式,如果驗證成功則建立session來代表登入成功,如果失敗則建立一個錯誤訊息變數供登入表單使用。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    include_once "./api/db.php";

    if(!empty($_POST)){
    if($_POST['acc']=='admin' && $_POST['pw']=='1234'){
    $_SESSION['login']=1;
    }else{
    $error="<div class='ct' style='color:red'>帳號或密碼錯誤</div>";
    }
    }
  3. back.php 的功能選單中加入依照 session 進行的判斷,因為合理來說,未登入的使用者應該是不能看到這些功能連結的
    back.php
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <div id="mm">
    <?php
    if(isset($_SESSION['login'])){
    ?>
    <div class="ct a rb" style="position:relative; width:101.5%; left:-1%; padding:3px; top:-9px;">
    <a href="?do=tit">網站標題管理</a>|
    <a href="?do=go">動態文字管理</a>|
    <a href="?do=poster">預告片海報管理</a>|
    <a href="?do=movie">院線片管理</a>|
    <a href="?do=order">電影訂票管理</a>
    </div>
    <div class="rb tab">
    ........
  4. /back.php 加上依據 session 的有無而決定要載入那個檔案的語法
    back.php
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <div class="rb tab">
    <?php
    $do=$_GET['do']??'main';
    $file="./back/{$do}.php";
    if(file_exists($file)){
    include $file;
    }else{
    include "./back/main.php";
    }
    ?>
    </div>