在上一步時我們完成了會員登入相關的功能,題組二前後台共用的部份只剩下登入顯示,其中管理員的登入顯示又和一般會員的顯示不太一樣,在製作時要注意一下。
- 必須有一個狀態用來紀錄登入的使用者,這邊我們使用session
- 在前面進行會員登入功能製作時,我們尚未做完登出及前後台登入區的顯示,我們放在這一步一起完成
先前我們在處理會員登入功能時,已經在類別
User
中的chk_acc($user)
方法中,增加了一個登入成功時會紀錄session的功能,這個session就是用來辨識使用者登入狀況的依據。
/Controller/User.php1
2
3
4
5
6
7
8
9
10
11
12
13
14
15function 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;
}
}修改
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;">
if (isset($_SESSION['user'])) {
歡迎,$_SESSION['user'];
if ($_SESSION['user'] == 'admin') {
echo "<button onclick='location.href='backend.php''>";
echo "管理";
echo "</button>";
}
<button onclick="location.href='./api/logout.php'">登出</button>
} else {
<a href="?do=login">會員登入</a>
}
</span>將
index.php
複製一份成為backend.php
修改
backend.php
中,include./view/front/
的路徑改成./view/backend/
backend.php1
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>