[ 紀錄 ] 實戰練習 - 部落格 (以 php 實作前端 + 後端)


Posted by krebikshaw on 2020-08-21

確認需求

  1. 要有登入機制,讓管理員能夠登入到管理後台 (註1)
  2. 身為一個管理員,要能夠新增文章、編輯文章、刪除文章
  3. 新增文章時要有標題以及內文(串接 CKEditor)
  4. 身為一個訪客,在首頁要能看到最新的五篇文章
  5. 全文列表功能,能看到所有文章
  6. 文章分類功能,能在後台管理分類列表,並可在分類顯示畫面依據類別顯示不同文章
  7. read more 功能,點選之後可以觀看完整文章
  8. 分頁功能

註1:

  • 後台要有彈性的管理文章機制,會顯示所有文章,可以設定文章類別,可以編輯及刪除。
    也可以進入管理文章類別的頁面,用於編輯及新增「文章類別」。

註2:

  • 解決明碼問題、SQL Injection 攻擊防護以及 XSS 攻擊防護

資料庫規劃

紀錄所需要的 table 及內容

user :
(會員只會有管理員一人,不開放外人註冊,所以不加上權限功能)

  • id :會員 id
  • username : 會員帳號 (獨一)
  • password : 會員密碼
  • created_at : 註冊時間

post :

id : 文章 id
user_id : (關聯 user.id)
category_id : (關聯 category.id)
title : 文章標題
content : 文章內容
is_deleted : 是否為刪除狀態
created_at : 新增時間
updated_at : 最後更新時間
deleted_at : 刪除時間

category :

id : 類別 id
name : 類別名稱
text : 類別說明
is_deleted : 是否為刪除狀態
created_at : 新增時間
updated_at : 最後更新時間
deleted_at : 刪除時間

檔案路由規劃

index.php (首頁)

  • 登入按鈕 -> 導到 login.php (登入頁面)
  • 登出按鈕 -> 執行 handle_logout.php 登出程式 -> 導回 index.php
  • 發佈文章按鈕 -> 導到 add_post.php (發佈文章頁面)
  • read more 按鈕 -> 導到 post.php (單一文章頁面)
  • 分類文章按鈕 -> 導到 category.php (分類文章頁面)
  • 全文列表按鈕 -> 導到 list.php (全文列表頁面)
  • 編輯文章按鈕 -> 導到 update_post.php (編輯文章頁面)
  • 刪除文章按鈕 -> 執行 handle_delete_post.php 刪除文章程式 -> 導回 index.php
  • 後台管理按鈕 -> 導到 backstage.php (後台管理頁面)

login.php (登入頁面)

  • 送出按鈕 -> 執行 handle_login.php 登入程式 -> 導回 index.php

add_post.php (發佈文章頁面)

  • 送出按鈕 -> 執行 handle_add_post.php 發佈文章程式 -> 導回 index.php

update_post.php (編輯文章頁面)

  • 更改文章類別的下拉式選單
  • 送出按鈕 -> 執行 handle_update_post.php 編輯文章程式 -> 紀錄上一頁網址,並導回上一頁

post.php (顯示單一文章頁面)

  • 編輯文章按鈕 -> 導到 update_post.php (編輯文章頁面)
  • 刪除文章按鈕 -> 執行 handle_delete_post.php 刪除文章程式 -> 導回 index.php

category.php (分類文章頁面)

  • 點選文章標題 -> 導到 post.php?id=id (顯示單一文章頁面)
  • 編輯文章按鈕 -> 導到 update_post.php (編輯文章頁面)
  • 刪除文章按鈕 -> 執行 handle_delete_post.php 刪除文章程式 -> 導回 index.php

list.php (全文列表頁面)

  • 點選文章標題 -> 導到 post.php?id=id (顯示單一文章頁面)
  • 編輯文章按鈕 -> 導到 update_post.php (編輯文章頁面)
  • 刪除文章按鈕 -> 執行 handle_delete_post.php 刪除文章程式 -> 導回 index.php

backstage.php (後台管理頁面)

  • 編輯文章按鈕 -> 導到 update_post.php (編輯文章頁面)
  • 刪除文章按鈕 -> 執行 handle_delete_post.php 刪除文章程式 -> 導回 backstage.php
  • 文章類別管理按鈕 -> 導到 category_manage.php (文章類別管理頁面)

category_manage.php (文章類別管理頁面)

  • 更新文章類別按鈕 -> 執行 handle_update_category.php 更新文章類別程式 -> 導回 category_manage.php
  • 新增文章類別按鈕 -> 執行 handle_create_category.php 新增文章類別程式 -> 導回 category_manage.php

開發流程規劃

  1. index.php 切版
    • 「建立」顯示文章功能
  2. add_post.php 切版
    • 「建立」新增文章功能
  3. post.php 切版
  4. login.php 切版
    • 「建立」會員登入功能
    • 「建立」會員登出功能
  5. 設定 SESSION 判斷登入狀態
    • 「修改」新增文章功能 - 非登入狀態不可使用
  6. update_post.php 切版
    • 「建立」編輯文章功能
    • 「建立」刪除文章功能
    • 「修改」編輯文章功能 - 非登入狀態不可使用
    • 「修改」刪除文章功能 - 非登入狀態不可使用
  7. category.php 切版
    • 「建立」點選標題導到單一文章功能
  8. list.php 切版
    • 「建立」點選標題導到單一文章功能
    • 「建立」文章分頁功能
  9. backstage.php 切版
    • 「建立」取得所有文章資料功能
    • 「修改」編輯文章功能 - 可判斷上一頁是首頁還是後台,導回正確頁面
    • 「建立」後台權限驗證 - 非登入狀態導回首頁
  10. category_manage.php 切版
    • 「建立」新增文章類別功能
    • 「建立」編輯文章類別功能
    • 「建立」後台權限驗證 - 非登入狀態導回首頁

#PHP #Blog







Related Posts

[Day 06]: Docker Network-2

[Day 06]: Docker Network-2

CSS 基礎 Part1:Selector

CSS 基礎 Part1:Selector

2017,讓我們再來看看 Web Components 吧!

2017,讓我們再來看看 Web Components 吧!


Comments