規劃產品
功能面
一、建立與伺服器的連線
$conn = new mysqli($server_name, $user_name, $password, $db_name);
if ($conn->connect_error) {
die('資料庫連線錯誤');
}
$conn->query('SET NAMES UTF8');
$conn->query('SET time_zone = "+8:00"');
二、顯示留言
error 最好印出是為甚麼 所以 $conn->error
sql query left join 部分:學習手冊 230 頁
三、新增留言
錯誤處理部分 => errorCode
透過 sql query 再後台新增資料,然後再呈現 => 重點是如何新增資料(透過 insert 指令) 學習手冊p248
四、新增會員機制
A、新增註冊功能 : 註冊頁面、註冊邏輯
1. 切版 2.錯誤處理 3.資料寫到後台
B、新增登入功能 : 登入頁面、登入邏輯
1. 切版 2.錯誤處理 3.輸入帳密與後台比對,若比對成功就是登入 4.紀錄登入
5. 有無登入顯示介面不同
C、新增登出功能
1. 清除登入紀錄 2. 修改顯示介面
五、編輯功能
A、編輯暱稱:檢查有無輸入、更新 SQL 表
B、編輯留言:
1.切版
2.設定權限
3.透過 echo 傳進的 id 做事情 (將id帶入不同的分頁)
4.透過 hidden input id 做事情 (將id帶入不同的分頁)
六、刪除功能
A、hard delete
1. 用 sql delete 刪除後台資料
B、soft delete
1. 用 sql update 後台資料,刪除的 is_deleted = 1
2. 調整顯示畫面
六、分頁功能
limit、offset,顯示畫面,分頁區塊
安全面
A、偽造身分
1. 首先:setcookie() => cookie 會被竄改
一、從 cookie 抓 username 再抓 nickname
2. 接著:自己實作 session 機制
一、從 cookie 抓 token 再抓 username 再再抓 nickname
二、結構:(1) token/token表 (2) token表查users表(兩表互查) (3) 改相對應的代碼
3. 最後:用 php 內建 session 機制
一、如何儲存 session 變數、如何取回他們的值
B、明文密碼問題
1. hash, add salt
一、註冊時存在資料庫的密碼要經過雜湊;登入時要比對輸入的密碼與雜湊結果是否相同
C、XSS
1. 輸入的內容在畫面上是文字的形式,透過:htmlspecialchars
D、SQL injection
佔位符號、prepare() p256
E、權限管理問題
1. 多加條件在 SQL QUERY