COOKIE 與 SESSION 都是扮演著記錄使用者資訊的角色。我們只要登入一個網站中的其中一個網頁,便可以在該網站中自由瀏覽,甚至關閉瀏覽器後,網站也能記住我們的帳戶資料,讓我們下次再使用時,不需重新登入,這靠的全是 COOKIE 與 SESSION。
不過 COOKIE 與 SESSION 仍然有一些差別,COOKIE 是將使用者資訊儲存在我們本機的瀏覽器中,SESSION 則是將使用者資訊儲存在伺服器中,並且當使用者關閉瀏覽器後,SESSION 也會跟著消失,故我們常說 SESSION 的安全性較 COOKIE 高。事實上,當一個 SESSION 建立的同時,在我們的電腦上也會產生一個 COOKIE,不過它是用來記錄該 SESSION 的 ID, 如此一來才能判斷哪個 SESSION 是屬於哪個使用者的。
設置 COOKIE | setcookie("名稱", "內容", "期限"); | setcookie("time", date("H:i:s"), time()+3600); |
$_COOKIE['名稱'] = "內容"; | $_COOKIE['time'] = date("H:i:s"); | |
顯示 COOKIE | echo $_COOKIE['名稱']; | echo $_COOKIE['time']; |
刪除 COOKIE | setcookie("名稱", "內容", "期限"); | setcookie("time", "", time()-60); |
設置 SESSION | session_start(); $_SESSION['名稱'] = "內容"; | session_start(); $_SESSION['time'] = date("H:i:s"); |
顯示 SESSION | session_start(); echo $_SESSION['名稱']; | session_start(); echo $_SESSION['time']; |
刪除 SESSION | session_start(); session_destroy(); | session_start(); session_destroy(); |
session_start(); unset($_SESSION ['名稱']); | session_start(); unset($_SESSION['time']); |
$_COOKIE、$_SESSION 都是 PHP 預先定義好的變數。date() 可以取得並格式化目前的時間;time() 同樣也可以取得目前的時間,只不過我們得到的是距離 1970 年 1 月 1 日 0 時 0 分 0 秒的秒數。想要刪除 COOKIE,只要將 setcookie() 的期限設為過去的時間,這樣這個 COOKIE 自然就失效了。在使用 SESSION 時需注意一定要加上 session_start(),且 session_start() 之前不能有輸出。