先說說它們相同的地方,它們都是文字的一種型態 data type。
CHAR 固定長度的字串,其長度可為 0 至 255,預設為 1 ,在儲存長度不足時,會自動在右邊補足空白 VARCHAR 可變長度的字串,最大的有效長度需視資料列大小限制而定。username 常用之。 TEXT 純文字欄位,最大長度為 2^16 -1 = 65535 個字元,儲存時會附加兩個位元組在最前面用來紀錄長度。content 常用之。
字串和文字欄位最大的不同是,欄位是有格式的,所以可以換行;而字串不行。所以,留言版的內容使用的資料型態是 TEXT,而不是 VARCHAR。
Cookie 是一種在網頁中儲存資料的方式。會將資料存在本地,也就是存在自己的 瀏覽器 browser 裡。
如果我們要設定 Cookie,可以在 Server 端的 PHP 檔裡利用 setcookie() 函式把資料存到 Cookie 裡面。 在我們的例子裡就是在 handle_login.php 檔案加上
$cookie_value_user_id = $row['id'];
setcookie("member_id", "$cookie_value_user_id", time() + 60 * 60);
此時,browser 發一個 request 去 handle_login.php (Request URL: http://handle_login.php)來得到在 Response Headers 中帶有一個 Set-Cookie: member_id=3; expires=Mon, 17-Jun-2019 20:37:57 GMT; Max-Age=3600 的 response。
瀏覽器 browser 收到這個 Set-Cookie 之後,在下一次發送 request 時,會把 Cookie 放在 headers 裡面一起帶去 Server。 在我們的例子裡就是在 browser 發一個 request 去 add.php(Request URL: http://add.php)時,在其 Request Headers 中會帶著一個 Cookie: member_id=3。
登出 logout 其實就是發一個 request 去 logout.php(Request URL: http://logout.php)來得到在 Response Headers 中帶有一個空 Cookie,即 Set-Cookie: member_id=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0 的 response。 在我們的例子裡就是在 logout.php 檔案加上
setcookie("member_id", "", time()-1200);
首先,相較於 Session,Cookies 比較容易被駭,會員登入系統應該要使用 Session 會比較安全。
再來,資料庫不直接儲存我們的密碼會比較好,應該轉換成一些亂碼來儲存會比較好。只可惜現在我真的不會,希望之後會教囉XD