8.7 COOKIE 與 SESSION

  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() 之前不能有輸出。