首頁 > Web 開發 > [Web] Cookie 小觀念

[Web] Cookie 小觀念

2009年4月16日 jaceju

問題

剛剛被問了一個 Cookie 的觀念,這邊簡單分享給大家。

先來看以下這個程式,請問它第一次執行時結果是什麼?

setcookie('test', 'abc');
var_dump($_COOKIE);

如果你回答的是空陣列的話,那就表示你瞭解 Cookie 的作用了。

說明

當我們在使用 setcookie 這個函式時,其實是在告訴瀏覽器: Server 要在它身上註冊一個 cookie 變數,這個變數會在下次瀏覽器連到同一個網站時,被送到 Server 上。

所以第一次我們傾印 $_COOKIE 這個超全域陣列時是抓不到值的 (注意這個動作是在 Server 端) ,因為這時瀏覽器才剛認識 setcookie 丟出來的 test 變數。

當第二次瀏覽同一個網站時,瀏覽器就會把記在自己身上的 cookie 丟回 Server (就像 POST 一樣) ,這時 Server (PHP) 才會知道 cookie 的內容,將它塞到 $_COOKIE 陣列裡。

如果想要第一次執行就取得 $_COOKIE 的值,那麼就得利用 redirect 的方式來處理,如下:

setcookie('test', 'abc');
if (empty($_COOKIE)) header('Location: ./');
var_dump($_COOKIE);

雖然這只是個小觀念,但希望能對大家在使用 Cookie 有進一步的瞭解。

Categories: Web 開發 Tags:
  1. hermeslin
    2009年4月16日12:01 | #1

    我也曾經被這個觀念困擾很久 Orz

  2. 2009年4月16日13:08 | #2

    這個問題之前有碰到過
    但 COOKIE 的使用上還不只這些問題
    當遇到次網域名稱時也會發生存取錯誤的問題
    看起來簡單的操作方便
    其實有很深的學問再裏面

  3. 2009年4月16日22:03 | #3

    以前寫 JSP 的時候 COOKIE 好像不太一樣
    不過忘記了 = =
    通通還給老師了
    PHP的先記起來先

    :: corAusir :: 程式逗設計
    - 提供 平面設計 與 程式設計 的資料 -
    blog.corausir.org

  1. 2009年4月16日12:16 | #1
目前尚未開放評論的功能。